问题
使用流行的 node-fetch
库,Intellisense 不理解 fetch()
的返回值。
带有 coc 的 Vim:
VSCode 中的相同内容:
对于大多数其他库,我有类型完成功能,但这个不起作用。
我尝试过的事情
- 添加了
jsconfig.json
和tsconfig.json
文件 - 调查了导出
@types/index.d.ts
的包
- 尝试安装
@types/node-fetch
,它也经常过时 - 转换为
import
语法,有效
预期结果
正如我提到的,更改为 import
语法可以解决问题,但我希望它也能与 require
一起使用。
我如何使用 CommonJS 在这个库上进行类型补全?
最佳答案
解决方案
const fetch = require('node-fetch').default
解释
为了弥合 CommonJS 和 ES 模块语法之间的根本差异,require('node-fetch')
返回具有以下形状的对象:
注意 node-fetch type definition 确实将 fetch()
函数导出为顶层,但也导出了一个 default
属性以与 ES 模块语法兼容。使用此属性可修复自动完成问题。
这对我来说仍然像是一个错误,但这个解决方法确实解决了这个问题。
关于javascript - CommonJS + node-fetch 不可用的 Intellisense 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66484663/