如何导入 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 现在,所以上面将不再需要。见 here和 here了解更多信息。
关于javascript - 使用 typescript 在 Node 项目中导入 Node 获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70142391/