【发布时间】:2022-01-31 08:52:00
【问题描述】:
我正在制作一个小的 node.js Web 应用程序,其中显然需要加载样式和脚本,这就是我为其中一个脚本所拥有的:
const express = require("express");
const app = express();
app.get("/home.js", (req, res) => {
readFile("./Scripts/home.js", (err, js) => {
if (err) {
res.status(500).send("We might have a problem here");
console.log(err);
}
res.setHeader("Content-Type", "text/javascript; charset=utf-8")
res.send(js);
});
});
app.listen(process.env.PORT || 3000, () => console.log("App available on http://localhost:3000"));
如您所见,我将内容类型设置为text/javascript; charset=utf-8。但是当我在firefox的html页面中请求脚本时,它有一个application/octet-stream content-type,这是firefox不知道文件类型时的默认值。
如何确保将其设置为text/javascript?
编辑:我可以通过将状态设置为 200 来解决此问题,但图像仍然存在此问题:ìmage/png,知道吗?
【问题讨论】:
-
尝试使用 Content-Type
application/javascript设置标题 -
我在一个 mozilla 页面上找到了
text/javascript,但是现在当我查看 iana.org 时,它确实是 application/javascript。天呐! png 被列为image/png,但知道是什么原因导致它显示为application/octet-stream? -
您应该
return或以其他方式在您的if (err) { ... }块内停止执行。 -
为什么要手动处理这样的静态文件?只需使用
app.use(express.static("./Scripts"))。见Serving static files in Express