【问题标题】:How to serve script file from Express route如何从 Express 路由提供脚本文件
【发布时间】:2018-10-24 03:51:24
【问题描述】:

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

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

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

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

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

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

我需要一些机制来使用这个js文件路径作为src(如上所示)。

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

【问题讨论】:

  • 使用res.sendFile() 而不是res.send()

标签: javascript node.js api express


【解决方案1】:

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

在给定的path 处传输文件。根据文件名的扩展名设置 Content-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 和相对路径。

【讨论】:

    猜你喜欢
    • 2017-07-27
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 2021-02-15
    • 2012-07-19
    • 1970-01-01
    相关资源
    最近更新 更多