零基础制作NFT集合遇node-fetch ERR_REQUIRE_ESM错误求助
解决Node.js中ERR_REQUIRE_ESM(node-fetch模块)的问题
别着急,这个问题其实很常见,是因为你安装的node-fetch是最新的ES模块版本,而你的代码用的是CommonJS规范(也就是用require()的写法),两者不兼容导致的。给你两个超简单的解决办法,优先试第一个,对新手最友好:
方法一:降级node-fetch到兼容CommonJS的旧版本
这个方法不需要改代码,只需要在命令行里执行几个简单命令:
- 打开你的
hashlips_art_engine-main项目文件夹,在这个文件夹里打开命令行(Windows按住Shift右键选「在此处打开PowerShell窗口」;Mac右键选「新建终端窗口」) - 先卸载当前的新版本:
npm uninstall node-fetch - 然后安装支持
require()的旧版本(v2.6.7是稳定兼容版本):npm install node-fetch@2.6.7 - 现在重新运行你的命令:
应该就能正常运行了!node utils/nftport/uploadFile.js
方法二:修改代码适配ES模块(如果方法一无效的话)
如果你不想降级版本,可以把代码改成ES模块的写法:
- 打开
uploadFile.js,把第一行的const fetch = require("node-fetch");改成:import fetch from 'node-fetch'; - 同时还要把文件里其他的
require也改成import,别忘了补充你代码里缺失的path模块导入:import FormData from "form-data"; import fs from "fs"; import path from "path"; - 最后,在你的项目根目录的
package.json文件里,添加一行"type": "module",比如:{ "name": "hashlips_art_engine", "type": "module", // 其他原有内容... } - 再重新运行命令就行。
⚠️ 额外提醒:你的uploadFile.js代码里原本缺少const path = require("path");这一行,因为用到了path.parse(),即使解决了fetch的问题,之后可能会报path is not defined的错误,记得一定要补上哦!
内容的提问来源于stack exchange,提问作者BloomstY
相关产品推荐
相关产品推荐

