JEST导入node-fetch报SyntaxError: Unexpected identifier错误如何解决
报错原因
你安装的node-fetch@3.x是纯ESM(ECMAScript Module)版本,仅支持import语法导入,不兼容CommonJS规范。同时你使用的Node v11.15.0对ESM原生支持度极低,且Jest默认不会转译node_modules目录下的依赖包,导致node-fetch内部的import语法无法被识别,触发语法错误。
解决方案
方案1:降级node-fetch到v2版本(最推荐,适配你当前的环境)
node-fetch@2.x版本同时兼容CommonJS和ESM规范,无需修改其他配置即可直接使用,操作步骤如下:
- 卸载当前的3.x版本
npm uninstall node-fetch
- 安装2.x最新稳定版
npm install node-fetch@2
安装完成后原有导入代码无需修改,直接运行即可。
方案2:保留node-fetch@3.x(需要调整环境和配置)
如果你必须使用3.x版本的新特性,需要做以下修改:
- 首先将Node版本升级至12.20.0以上,这是node-fetch@3.x要求的最低支持Node版本
- 在项目
package.json中新增配置项"type": "module",声明项目默认使用ES模块规范 - 修改Jest配置,新增
transformIgnorePatterns配置,让Jest转译node-fetch:
// jest.config.js 对应新增配置 module.exports = { // 其他原有配置保留 transformIgnorePatterns: ["/node_modules/(?!node-fetch)/"] }
- 调整Babel预设配置,确保支持ES模块转译
内容的提问来源于stack exchange,提问作者José Carlos
相关产品推荐
相关产品推荐

