Node.js使用node-fetch报Unexpected token import错误怎么解决?
错误原因
- 当前你安装的
node-fetch为v3及以上版本,该版本已全面改为纯ES Module规范,仅支持import语法导入,不再兼容CommonJS的require导入方式 - 你的Node.js版本要么低于v12.20.0(本身不支持ES Module的
import语法),要么没有在项目package.json中声明"type": "module",默认按照CommonJS规范解析JS文件,因此会识别import为非法语法 - 你将自身代码改为
require写法后,node-fetchv3内部代码依然使用ES Module的import语法,Node.js解析依赖包代码时依然会触发语法错误
解决方案
有两种可行方案,任选其一即可:
方案一:安装兼容CommonJS的低版本node-fetch(操作最简单,推荐新手使用)
- 执行命令卸载当前高版本node-fetch:
npm uninstall node-fetch - 执行命令安装v2版本的node-fetch(该版本支持require导入):
npm install node-fetch@2 - 保持你修改后的require写法的代码不变,重新执行
node fetch.js即可正常运行
方案二:适配ES Module规范使用最新版node-fetch
- 首先执行
node -v检查你的Node.js版本,必须高于等于v12.20.0,版本过低请先升级Node.js - 打开项目根目录下的package.json文件,在顶层JSON配置中添加一行:
"type": "module" - 恢复你的代码为最初的import写法,重新执行
node fetch.js即可正常运行
内容的提问来源于stack exchange,提问作者Yannick Pezeu
相关产品推荐
相关产品推荐

