我有一个在后端使用 Node.js + Express 的 API。
对于 API 端点之一,我想使用“sendFile”的快速响应对象方法,记录在此处:
https://expressjs.com/en/api.html#res.sendFile
API 应该通过 sendFile 方法返回一个 Javascript 文件。
一直想不通的是前端怎么读入.js文件,才能使用文件中定义的JavaScript函数。 sendFile 部分似乎在工作——这只是我无法弄清楚的文件的使用。
这是我在后端做的事情:
app.get("/api/member", async (req, res) => {
options = {
root: path.join(__dirname, '/static'),
dotfiles: 'deny'
}
res.sendFile("member.js", options, (err) => {
if (err) {
console.log(err)
next(err)
} else {
console.log('Sent file')
}
})
});
这似乎工作正常,因为我可以导航到本地主机上的端点并加载 JS 文件。文件 member.js 只包含一些 javascript 函数定义。
但是,一旦文件到达前端,我就不知道如何消费/使用它了。
这是我目前在前端的内容:
async function refreshJS() {
const url = `${baseUrl}/member`;
const response = await fetch(url, { credentials: "include" });
const script = document.createElement("script")
script.type = "text/javascript"
script.src = response.body
document.head.appendChild(script)
eval(script)
}
我花了很多时间查看控制台/调试器以查找与 JS 函数关联的文本——但无处可寻。
我已经通过控制台在本地加载 JS 文件来测试这个通用框架并且它有效,所以我认为它被误解了 JS 函数在 API 响应中的位置。例如,如果我将上面的命令替换为:
script.src = response.body
与
script.src = "member.js"
然后一切正常。
我看过的示例似乎专门处理发送在前端加载的 HTML 文件。但是,我无法从 fetch API 中找到支持文档来了解如何使用 JS 文件内容。