部署Discord机器人到Heroku时触发SyntaxError: 意外token '??=' 报错求助
报错根因
该错误是Node.js运行环境版本过低导致的语法不兼容问题:
代码里的??=是ES2021新增的逻辑空赋值运算符,仅Node.js v15.0.0及以上版本支持,而你使用的discord.js v13+版本要求最低Node.js版本为v16.6.0,Heroku默认的Node版本低于该要求,解析代码时直接抛出语法错误,导致进程崩溃退出。
修复步骤
- 打开项目根目录下的
package.json文件,新增engines字段手动指定Node版本,示例配置如下:
{ "name": "discord-bot", "version": "1.0.0", "engines": { "node": "16.x" }, "dependencies": { "discord.js": "^13.17.1" } }
你可以根据自己的实际项目参数调整其余字段,只要保证engines下的node版本≥16.6.0即可,也可以指定18.x等更高的LTS版本。
- 确认
dependencies下的discord.js版本匹配对应的Node版本要求,避免出现其他版本兼容问题。 - 把修改后的
package.json和对应锁定版本的package-lock.json(使用npm的场景)或yarn.lock(使用yarn的场景)一起提交到代码仓库,重新推送到Heroku触发部署即可解决该问题。
内容的提问来源于stack exchange,提问作者MannB1023
相关产品推荐
相关产品推荐

