Node.js 18环境下Venom-Bot 5.0.5出现ERR_REQUIRE_ESM错误求助
问题分析
你遇到的ERR_REQUIRE_ESM错误根源在于:Venom-Bot 5.0.5依赖的latest-version模块从v7版本起改为纯ES模块,而Venom-Bot自身代码仍使用CommonJS的require()语法导入它,触发了Node.js的模块兼容限制。
解决方法
提供三个可行方案:
方案1:降级
latest-version到兼容版本
执行以下命令强制安装支持CommonJS的latest-version@6.0.0:npm install latest-version@6.0.0 --save-exact该版本为CommonJS格式,可直接与Venom-Bot的代码兼容。
方案2:临时修改Venom-Bot代码
找到node_modules/venom-bot/dist/controllers/check-up-to-date.js文件,将第7行的:const latest_version_1 = __importDefault(require("latest-version"));替换为:
import latest_version from 'latest-version'; const latest_version_1 = { default: latest_version };注意:该修改会在重新安装依赖后失效,若需持久化,可使用
patch-package工具生成补丁。方案3:将项目转为ES模块
在项目的package.json中添加:"type": "module"同时将自身代码中的
require()替换为import语法,比如导入Venom-Bot的代码改为:import venom from 'venom-bot';此方式需调整项目的模块语法,但能从根本上解决ESM与CommonJS的兼容问题。
内容的提问来源于stack exchange,提问作者Calos Baez
相关产品推荐
相关产品推荐

