Express 不为 NPM 安装的 Bootstrap JS 提供服务,但可以通过直接链接访问

Express not serving NPM installed Bootstrap JS, but is reachable via direct link

提问人:SandPiper 提问时间:11/4/2023 更新时间:11/4/2023 访问量:49

问:

我已经通过 NPM 安装了 Bootstrap 5 和 Express。在我的 Express 应用程序中,我静态地包含以下引导文件:

app.use('/bootstrap', express.static(path.join(__dirname, 'node_modules/bootstrap/dist/')))

在我的 , 文件中,我有以下标题:index.ejs

<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="robots" content="noindex, nofollow, noarchive" />
    <title>My Website Title</title>
    <link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css"/>
    <script defer language="javascript" src="/bootstrap/js/bootstrap.bundle.js"></script>
</head>

css 加载完全没有问题。javascript 永远不会加载。

奇怪的是,将在 14 毫秒内立即提供文件。相同。所以我知道 Express 将提供 javascript。http://localhost:3000/bootstrap/js/bootstrap.min.jshttp://localhost:3000/bootstrap/css/bootstrap.min.css

检查网络选项卡会显示 js 文件的状态。将源更改为类似 立即返回 status .pending<script defer language="javascript" src="bootstrap/js/bootstrap.nonexistant.js"></script>404

为什么当我尝试通过网页访问它时它没有加载?

JavaScript 节点.js express bootstrap-5

评论

0赞 Leonardo Gazdek 11/4/2023
尝试在提供 JS 文件时设置标头。您在 JS 控制台中遇到任何错误吗?此外,将 language=“javascript” 更改为 type=“text/javascript”,因为 language=“javascript” 被认为已过时。此外,您指定了 ,但说 loads。仔细检查一下,我假设你只是在问题中打错了字。Content-Type: text/javascriptbootstrap.bundle.jsbootstrap.min.js
0赞 SandPiper 11/4/2023
加载 和 两者在分别由 和 访问时起作用。理想情况下,我追求.但是当从 html 端加载时,两者都不起作用。bootstrap.bundle.jsbootstrap.min.jshttp://localhost:3000/bootstrap/js/bootstrap.bundle.jshttp://localhost:3000/bootstrap/js/bootstrap.min.jsmin
0赞 SandPiper 11/4/2023
@LeonardoG将其更改为会导致它甚至根本不加载 javascript。<script defer language="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
0赞 SandPiper 11/4/2023
同样奇怪的是,如果我偶尔一遍又一遍地点击刷新,它会为 javascript 显示状态 200 并且它可以工作。这更奇怪......
0赞 Leonardo Gazdek 11/4/2023
它不是 ,您可以完全删除 language 属性。如果这不起作用,那么 Web 服务器似乎存在问题,因为它有时会加载,有时不会。您的服务器是否能够同时处理这两个请求(css + js)?type="text/javascript"language="text/javascript"

答: 暂无答案