JS导入node-fetch时报Module import or export statement unexpected here求助
Node.js导入node-fetch报错解决方案
该报错本质是Node.js模块规范不匹配导致的问题:v3及以上版本的node-fetch仅支持ES Module(import/export)语法,而你的项目当前默认使用CommonJS规范,直接用import导入就会触发语法错误。
可用解决路径
方案1:切换项目为ES Module规范
打开项目根目录的package.json文件,在顶层配置中新增"type": "module"字段。配置完成后即可正常使用import fetch from 'node-fetch'语句导入包。
注意:添加该配置后,项目内所有JS文件都需要遵循ES Module规范,不可再使用require()导入依赖方案2:安装兼容CommonJS的低版本node-fetch
无需改动项目现有模块规范,卸载当前高版本node-fetch后安装v2版本即可(v2是最后一个支持CommonJS的node-fetch版本)。
终端执行命令:npm uninstall node-fetch && npm install node-fetch@2
之后使用CommonJS语法导入:const fetch = require('node-fetch')方案3:使用Node.js内置fetch(版本要求>=18.x)
如果你使用的Node.js版本在18.0及以上,不需要额外安装node-fetch,Node.js已经内置了全局fetch方法,直接调用即可,完全规避模块冲突问题。
额外排查点
- 确认你运行代码的执行命令正确,不要混淆
.mjs/.cjs后缀文件的运行规则 - 若你是在前端浏览器环境运行代码,不需要安装node-fetch,浏览器原生支持
fetchAPI,直接调用即可
内容的提问来源于stack exchange,提问作者excitedrasin
相关产品推荐
相关产品推荐

