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

Node.js引入node-fetch时报ERR_REQUIRE_ESM错误如何解决?

核心原因

你安装的是v3及以上版本的node-fetch,该版本开始仅支持ES Module(ESM)规范导入,不再兼容CommonJS的require()语法,而你当前项目代码采用的是CommonJS规范,因此触发报错。


可选解决方案

方案1:降级安装node-fetch v2(改造成本最低,无需修改现有代码逻辑)

v2版本的node-fetch仍兼容CommonJS规范,直接执行命令重装指定版本即可:

npm uninstall node-fetch && npm install node-fetch@2

修改完成后原有const fetch = require('node-fetch')代码无需改动,直接运行即可正常执行。

方案2:将项目整体切换为ESM规范(适配最新版本要求)

若你希望使用最新版的node-fetch,可将项目改为ESM规范,操作步骤如下:

  1. 在项目根目录的package.json文件中新增配置项:"type": "module"
  2. 修改现有代码的导入导出语法:
  • secrets.js修改为:
const secrets = {}
secrets.key = "..."
secrets.discord = "..."
secrets.cityName = "..."
export default secrets
  • main.js修改为:
import secrets from './secrets.js'
import fetch from 'node-fetch'

async function main(){
    console.log(secrets)
}

main()

方案3:在CommonJS规范下使用动态import导入(无需修改项目整体规范)

Node 14+已支持在CommonJS代码中通过异步动态导入语法加载ESM模块,你可以直接修改main.js代码适配:

const secrets = require('./secrets.js')

async function main(){
    // 动态导入node-fetch
    const fetch = (await import('node-fetch')).default
    console.log(secrets)
    // 后续可正常调用fetch方法
}

main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:09:00