You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js导入node-fetch时报require()不支持ES模块问题求助

问题根因

核心原因是 node-fetch@3.x 版本已全面转为纯ES Module包,不再支持CommonJS方式的require加载,和你使用的esm加载器存在兼容性冲突,具体问题点如下:

  • node-fetch v3的package.json中明确标记了 "type": "module",Node原生检测到这类包被require调用时就会直接抛出ERR_REQUIRE_ESM错误,哪怕引入了esm加载器也绕不过该原生检测逻辑
  • 你当前使用的Node v14版本对原生ESM的支持还处于实验阶段,esm加载器对纯ESM第三方包的适配存在缺陷,无法兼容node-fetch v3的加载规则
可行解决方案

方案1:降级node-fetch到2.x版本(适配成本最低)

node-fetch 2.x版本同时支持CommonJS和esm加载器,直接执行安装命令即可:

npm install node-fetch@2

安装完成后原启动命令node -r esm server.js无需修改即可正常运行。

方案2:使用Node原生ESM加载(无需esm包)

  1. 在项目的package.json文件中添加 "type": "module" 配置
  2. 去掉启动命令中的esm加载器参数,Node v14环境需要额外添加实验性参数适配模块解析逻辑,完整运行命令为:
node --experimental-specifier-resolution=node server.js

方案3:升级Node版本到16.x及以上

Node 16.x之后原生ESM支持已经稳定,升级后按方案2的配置操作,无需添加额外实验性参数即可正常加载node-fetch v3版本。


内容的提问来源于stack exchange,提问作者Roope Kuisma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:54:04