javascript - 使用 typescript 在 Node 项目中导入 Node 获取

标签 javascript node.js typescript fetch

如何导入 node-fetch打包到我使用 typescript 的 Node 项目中.
我尝试了很多方法......现在我在:

const fetch = (...args) =>
    import("node-fetch").then(({ default: fetch }) => fetch(...args));
但我有两个错误:
Cannot redeclare block-scoped variable 'fetch'.
A spread argument must either have a tuple type or be passed to a rest parameter.
当我更改 const fetch =到任何其他名称,如 const fetchIt =它修复了第一个错误但是......我真的必须改变它吗?如何导入 node-fetch以正常方式打包,我可以使用 fetch()方法?在 React 我只是做
import fetch from 'node-fetch';
一切正常...为什么在 node 中这么难项目?

最佳答案

如果您与全局 fetch 有冲突,这表明您拥有 DOM您的 tsconfig.json 中的库启用,例如:

{
  "compilerOptions": {
    "lib": ["es2021", "dom"]
  }
}
我建议删除 这个。对于 NodeJS 项目,请查看 this回答建议的tsconfig.json设置取决于 NodeJS 版本。
在此之后,您将能够导入 fetch正如您在问题中所写,并将其分配给名为 fetch 的变量,没有冲突的名称:
import fetch from 'node-fetch';
替代解决方案:如果您需要使用以浏览器为中心构建并需要全局获取的第 3 方库,请查看 isomorphic-fetch 模块,增加了 fetch作为全局函数。
您需要导入一次,以便 fetch可在全局范围内使用:
import 'isomorphic-fetch';
在这种情况下,tsconfig.json 的编译器选项应该包含 dom库。
2022-02-04 更新
较新的 NodeJS 版本提供原生 fetch API 现在,所以上面将不再需要。见 herehere了解更多信息。

关于javascript - 使用 typescript 在 Node 项目中导入 Node 获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70142391/

相关文章:

node.js - 我可以在退出时检测子进程是否完成 io 处理吗?

javascript - 如何忽略 TypeScript 装饰器(像通常类型一样使用 NestJS 实体)?

typescript - 我在网络上多次发现的这个 Firebase 代码片段做错了什么?

javascript - 如何将数字变量插入到replaceWith中(JavaScript)

在 Windows 上安装 Node.js 和 Grunt

unit-testing - Angular 2 单元测试 : Cannot find name 'describe'

typescript - 如何在 Ionic 2 的 typescript 中使用异步函数?

javascript - 我们如何从 Redux - saga 中的 store.dispatch 返回一个 Promise,以便我们可以等待解析然后在 SSR 中渲染?

javascript - 将状态设置为空字符串不会为我触发重新渲染?

javascript - 如何自定义TinyMCE上传UI?