0

所以我有一个使用 Handlebars 渲染的站点,并使用 Express、MongoDB 和 Mongoose 构建。该站点呈现并且我来自数据库的数据将填充,但我无法让我的主 app.js 文件运行。我已经将它放在公用文件夹中,该文件夹在我的服务器文件中作为静态位置提供,但是当它在网络选项卡中注册时,它实际上不会运行它的任何逻辑。我尝试了很多东西,实际上是零变化。

主要脚本调用主要位于我的模板文件中,但我尝试了许多变体,结果都相同。我已经阅读了关于车把等的多个文档,我什至还完成了其他项目,其中 js 文件加载良好。我不知道缺少什么,并且有几个人试图帮助我并被难住了。帮助 Stack Overflow,你是我唯一的希望!!!

仅供参考,这是我的 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>

4

1 回答 1

1

好的,所以另一个人找到了答案。这很奇怪。我有机会坐下来看看。如果您从脚本标签中删除“类型”属性,一切都会正常加载。我以前见过这种情况,但我不知道是什么原因造成的。我要去研究一下,看看能不能提供一些见解。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

于 2020-04-25T15:23:46.317 回答