Node.js v10引入node-fetch报SyntaxError: Unexpected identifier求助
错误产生原因
- 你安装的是
node-fetch@3.x及以上版本,该版本系列完全使用ES Module规范开发,仅支持import语法导入,不再兼容CommonJS的require()导入方式 - 你当前使用的Node v10.19.0对ES Module规范的支持度极低,默认无法识别源码中的
import关键字,直接触发语法错误 - 额外安装的
http包是冗余操作,http是Node内置核心模块,无需单独通过npm安装
修复方案
方案1:适配现有Node版本(无需升级Node)
直接安装支持CommonJS规范的node-fetch@2.x版本即可,操作步骤如下:
- 卸载当前安装的高版本node-fetch
npm uninstall node-fetch
- 安装2.x分支的最新稳定版
npm install node-fetch@2
- 卸载冗余的http包(可选,避免依赖冲突)
npm uninstall http
修改完成后原有代码无需调整,直接运行即可正常启动。
方案2:升级Node适配最新版node-fetch
如果你需要使用node-fetch的新特性,可以按如下操作适配:
- 升级Node版本到14.x及以上的LTS长期支持版本
- 在项目的
package.json中添加配置项,声明项目使用ES Module规范:
{ "type": "module" }
- 将原有代码的CommonJS导入语法替换为ES Module语法:
import express from "express"; import fetch from 'node-fetch'; const app = express(); const PORT = process.env.PORT = 8787; let router = express.Router();
内容的提问来源于stack exchange,提问作者A. Vreeswijk
相关产品推荐
相关产品推荐

