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

零基础制作NFT集合遇node-fetch ERR_REQUIRE_ESM错误求助

解决Node.js中ERR_REQUIRE_ESM(node-fetch模块)的问题

别着急,这个问题其实很常见,是因为你安装的node-fetch是最新的ES模块版本,而你的代码用的是CommonJS规范(也就是用require()的写法),两者不兼容导致的。给你两个超简单的解决办法,优先试第一个,对新手最友好:

方法一:降级node-fetch到兼容CommonJS的旧版本

这个方法不需要改代码,只需要在命令行里执行几个简单命令:

  1. 打开你的hashlips_art_engine-main项目文件夹,在这个文件夹里打开命令行(Windows按住Shift右键选「在此处打开PowerShell窗口」;Mac右键选「新建终端窗口」)
  2. 先卸载当前的新版本:
    npm uninstall node-fetch
    
  3. 然后安装支持require()的旧版本(v2.6.7是稳定兼容版本):
    npm install node-fetch@2.6.7
    
  4. 现在重新运行你的命令:
    node utils/nftport/uploadFile.js
    
    应该就能正常运行了!

方法二:修改代码适配ES模块(如果方法一无效的话)

如果你不想降级版本,可以把代码改成ES模块的写法:

  1. 打开uploadFile.js,把第一行的const fetch = require("node-fetch");改成:
    import fetch from 'node-fetch';
    
  2. 同时还要把文件里其他的require也改成import,别忘了补充你代码里缺失的path模块导入:
    import FormData from "form-data";
    import fs from "fs";
    import path from "path";
    
  3. 最后,在你的项目根目录的package.json文件里,添加一行"type": "module",比如:
    {
      "name": "hashlips_art_engine",
      "type": "module",
      // 其他原有内容...
    }
    
  4. 再重新运行命令就行。

⚠️ 额外提醒:你的uploadFile.js代码里原本缺少const path = require("path");这一行,因为用到了path.parse(),即使解决了fetch的问题,之后可能会报path is not defined的错误,记得一定要补上哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:44:22