首页 > 解决方案 > 如何从 Express 路由提供脚本文件

问题描述

我有一个 js 脚本,我想将它包含在我的 html 文件的 src 属性中。当我直接从本地路径添加脚本时,它正在工作。

是否可以从快速路由返回文件路径并将该路由用作我的 html 中 src 的值?这就是我想在 html 中包含我的快速路由的方式

<script src="http://localhost:2222/widget" type="text/javascript"></script>

Express 服务器在端口 2222 上运行并且有一些 api。现在在我的快速路线/小部件中

app.get("/widget", (req, res) => {
     res.send(path.join(__dirname + "/src/client/public/bundle.js"));
});

当我简单地触发 localhost:2222/widget 时,会显示从 /home/... 开始的正确路径

我需要一些机制来将此 js 文件路径用作 src(如上所示)。

注意:我已经为访问控制添加了所有的 cors、headers 等。

标签: javascriptnode.jsapiexpress

解决方案


用于res.sendFile()发送文件而不是路径:

传输给定的文件pathContent-Type根据文件名的扩展名设置响应 HTTP 标头字段。除非在选项对象中设置了 root 选项,path否则必须是文件的绝对路径。

因此,您的代码变为:

app.get("/widget", (req, res) => {
     res.sendFile(path.join(__dirname, "/src/client/public/bundle.js"), err => console.log(err));
});

由于您正在使用path.join(),您可以用逗号分隔__dirname相对路径。


推荐阅读