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

Node.js使用require加载node-fetch时报Must use import to load ES Module错误

问题原因

该报错是因为你安装的是node-fetch@3.x及以上版本,该版本起官方将包调整为纯ES Module格式,仅支持import语法引入,不再兼容CommonJS规范的require引入方式,和你自身项目是否配置"type": "module"无关。你之前删除node_modules和package-lock.json重装无效,是因为默认安装的还是最新的3.x版本,属于版本本身的特性限制,和依赖安装错误无关。

解决方案

你可以根据自己的项目情况选择以下任意一种方案解决:

  • 方案1:降级到支持CommonJS的2.x版本(最省事,无需修改现有代码逻辑)
    执行以下命令安装v2版本的node-fetch:
    npm install node-fetch@2
    
    安装完成后原来的const fetch = require('node-fetch')代码可以直接正常使用。
  • 方案2:保留3.x版本,在CommonJS文件中使用动态import引入
    无需降级版本,将原来的require引入代码替换为动态引入写法即可:
    // 全局引入写法
    const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args));
    
    // 若在async函数内使用,也可以写成:
    async function yourRequestFunc() {
      const { default: fetch } = await import('node-fetch');
      // 后续正常调用fetch即可
    }
    
  • 方案3:切换项目为ESM规范
    如果你愿意将整个项目切换为ES Module规范,可以在自己项目的package.json中添加"type": "module"配置,之后将所有require写法替换为import语法即可:
    import fetch from 'node-fetch'
    

注意:不要按照报错提示修改node_modules/node-fetch/package.json的配置,该修改无意义,下次重装依赖就会被覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:27:04