我有一个在后端使用Node.js + Express的API。
对于其中一个API端点,我希望使用“sendFile”的Express响应对象方法,文档如下:
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文件内容。
1条答案
按热度按时间rekjcdws1#
确定了我自己问题的答案。下面是使它工作的前端代码。