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

TypeScript引入node-fetch报require() of ES Module不支持错误问询

问题根源

  • node-fetch v3及以上版本仅支持ESM模块规范,不再兼容CommonJS。你未添加"type": "module"时,Node默认将所有.js文件按CommonJS处理,ts-node编译后生成的代码会用require引入node-fetch,就触发require() of ES Module is not supported报错。
  • 添加"type": "module"之后,Node默认将所有文件按ESM处理,原生ts-node默认配置不支持ESM模式下直接识别.ts后缀,所以会报扩展名未知错误。

解决方案

方案一(最省事,无需修改现有逻辑):降级node-fetch到v2版本

v2版本同时兼容CommonJS和ESM,完全适配你当前的项目配置,无需新增tsconfig也不用调整package.json的type字段:

  1. 卸载当前版本的node-fetch:yarn remove node-fetch
  2. 安装v2版本及对应类型声明:yarn add node-fetch@2 @types/node-fetch@2 -D
  3. 原有的import fetch from 'node-fetch'写法无需修改,直接正常运行即可。

方案二(保留node-fetch v3):修改ts-node启动参数

如果你一定要使用v3版本的新特性,也不需要新增tsconfig.json,只要修改两处配置即可:

  1. 在package.json中保留"type": "module"配置
  2. 修改package.json的scripts字段中的start命令为"start": "ts-node --esm ."
    修改后的scripts配置示例:
"scripts": {
  "dev": "nodemon --exec \"yarn start\" --watch src --ext ts,json --ignore *.test.ts",
  "start": "ts-node --esm ."
}

修改完成后直接运行yarn dev或者yarn start就可以正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:45:03