因此,我有一个使用Handlebars渲染的网站,并使用Express,MongoDB和Mongoose进行了构建。该站点将渲染,并且我的数据库中的数据将被填充,但是我无法运行我的主要app.js文件。我已经将它放在公用文件夹中,该文件夹在服务器文件中作为静态位置提供,但是当它在“网络”选项卡中注册时,实际上并不会运行任何逻辑。我已经尝试了很多东西,并且零变化。
主脚本调用大部分位于我的模板文件中,但是我尝试了多种变体,所有变体都具有相同的结果。我已经阅读了有关把手等的多个文档,甚至在js文件加载正常的情况下,我还做了其他项目。我不知道缺少了什么,而且我有好几个人试图帮助我并感到沮丧。帮助堆栈溢出,您是我唯一的希望!
仅供参考,这是我的HBS布局页面和我的app.js文件。它位于public / assets文件夹中。我很茫然。
$(document).ready(function() {
$(document).on("click", ".scrape-new", function(request, response) {
console.log
$.ajax({
method: "GET",
url: "/scrape"
})
.then(function(result) {
response.send("data scraped");
response.redirect("/");
})
.catch(function(error) {
throw error;
})
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n"
crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/assets/css/style.css">
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@900&display=swap" rel="stylesheet">
<link rel="icon" type="image/svg" href="/assets/images/newspaper-solid.svg">
<title>Onion Scraper</title>
</head>
<body>
{{{body}}}
<script src="/assets/app.js" type="javascript"></script>
</body>
</html>
好,所以另一个人找到了答案。这很奇怪。我有机会坐下来看看。如果您从脚本标签中删除“ type”属性,则一切正常加载。我以前见过,但我不知道是什么原因造成的。我将进行研究,看看是否能提供一些见解。 10:13哈哈!事实证明,如果在指定类型时为JavaScript文件提供了除javascript之外的任何其他类型的标头,则浏览器将无法加载它。 Express显然将JS文件加载为“脚本”类型,这意味着指定的类型(javascript)不匹配。旧代码:<script src="/assets/app.js" type="javascript"></script>
对此:<script src="/assets/app.js"></script> That suddenly fixed it