如何处理Express response.sendFile()返回的JS文件

问题描述 投票:0回答:0

我有一个在后端使用 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 文件内容。

node.js express fetch
© www.soinside.com 2019 - 2024. All rights reserved.