javascript - 在浏览器和 Node 中的js文件中使用node-fetch

标签 javascript node.js fetch-api

我构建了一个类来从 API 中获取一些信息并为我的应用构建合适的响应。

我在浏览器上运行的应用程序和在终端上运行的 CLI 应用程序中都使用了这个文件。

当我首先构建浏览器应用程序时,没有导入到 node-fetch。 现在,当我尝试在我的 CLI 应用程序中使用此 .js 文件时,它会返回错误消息,提示 fetch is not defined

如果我添加到我的 api 客户端 .js 文件:import fetch from "node-fetch" 那么现在我的浏览器应用程序不能正常工作,打印到控制台:

未捕获的类型错误:无法解析模块说明符“node-fetch”。相对引用必须以“/”、“./”或“../”开头。

有没有办法为两者应用 fetch 和使用相同的文件?

谢谢

最佳答案

对于无法更新 Node 的用例,您可以有条件地导入 Fetch API。

let fetch = globalThis?.fetch;

if (!fetch && process?.versions?.node) {
  fetch = (await import('node-fetch')).default;
}

console.log(fetch);

请注意,这使用了 top-level await .

关于javascript - 在浏览器和 Node 中的js文件中使用node-fetch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72434338/

相关文章:

javascript - 如何监听 backbone 中的 HTTP 事件

javascript - Puppeteer 元素选择返回 null 或超时

javascript - 如何通过 sudo 命令使用 forever-node?

node.js - 具有不同日志级别的 log4js appender

javascript - cURL 命令有效,但 Fetch API 调用返回 200,响应负载中出现 400 验证错误

javascript - 如何计算事件的 javascript 超时?

javascript - 使用 vanilla javascript 将 es6 模板字符串转换为 html 元素

node.js - Mongoose 和新架构 : returns "ReferenceError: Schema is not defined"

javascript - React 中的多个 API 调用

javascript - 当 process.env.NODE_ENV= ='production' 时,使用 babel-polyfill 在 IE11.0.9600 中未定义 fetch 和 Headers