repl.it升级node.js到v16后discord.js机器人仍报兼容错误如何解决
discord.js 空值合并运算符报错修复方案
你遇到的报错内容如下:
/home/runner/MathBot/node_modules/discord.js/src/rest/RESTManager.js:32 const token = this.client.token ?? this.client.accessToken;
报错根因
该报错核心是运行环境的Node.js版本不支持ES2020新增的??空值合并运算符。即使你手动配置了Node.js v16,repl.it实际运行时未读取到你的版本配置,仍调用了v14以下的旧版本Node执行代码,无法识别该语法。
修复步骤
- 第一步:确认实际运行的Node版本
在项目入口文件(通常为index.js)最顶部添加如下代码,运行后查看控制台输出版本号:
console.log(process.version)
如果输出版本低于v14.0.0,即可确认是版本配置未生效导致的问题。
- 第二步:强制指定repl.it运行Node版本
打开项目根目录的package.json文件,新增engines字段锁定Node版本,参考配置如下:
{ "name": "math-bot", "version": "1.0.0", "engines": { "node": ">=16.9.0" }, "dependencies": { "discord.js": "^14.11.0" } }
如果配置后仍未生效,在根目录新建名为.replit的文件,写入如下内容指定启动命令:
run = "nvm use 16 && node index.js"
- 第三步:重装依赖消除缓存
删除项目根目录下的node_modules文件夹和package-lock.json文件,执行npm install重新安装所有依赖后启动项目即可。 - 第四步:版本兼容性校验
如果你使用的是discord.js v13及以上版本,必须保证Node版本≥v16.9.0,避免后续出现其他兼容类报错。
内容的提问来源于stack exchange,提问作者Daniesh Rieza
相关产品推荐
相关产品推荐

