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

Typescript项目导入node-fetch报ERR_REQUIRE_ESM错误如何解决

问题根因

你遇到的报错核心原因是:node-fetch@3.x 及以上版本仅支持ES Module模块规范,不再兼容CommonJS规范。你初始配置下TS编译输出CommonJS格式代码,运行时用require()加载ESM格式的node-fetch就会触发第一个报错;你切换到ESM规范后,默认配置的ts-node不支持在ESM模式下识别.ts扩展名,因此触发第二个报错。


方案1:降级使用node-fetch@2.x(改动最小,推荐)

node-fetch 2.x版本同时兼容CommonJS和ESM规范,不需要调整你的现有配置,直接安装对应版本即可:
执行安装命令:

npm install node-fetch@2 @types/node-fetch@2 --save

安装完成后原有导入写法import fetch from 'node-fetch'无需修改,直接就能正常运行。


方案2:适配ESM规范使用高版本node-fetch

如果需要使用node-fetch 3.x及以上的新特性,按以下步骤调整配置即可:

  1. 修正tsconfig.json中的拼写错误:你当前的tsconfig里有个配置名写错了,把sModuleInterop改为esModuleInterop: true,否则会影响模块导入逻辑。
  2. 在package.json中添加配置:
{
  "type": "module"
}
  1. 修改tsconfig.json的编译配置:
{
  "compilerOptions": {
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    // 其他原有配置保持不变即可
  }
}
  1. 修改nodemon配置的执行命令:
{
  "execMap": {
    "ts": "NODE_ENV=development node --no-warnings --loader ts-node/esm -T"
  }
}

调整完成后重新启动服务即可正常导入使用node-fetch。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:06:05