部署discord.js机器人到Heroku出现Unexpected token '??='报错崩溃
报错原因
??=是ES2021新增的逻辑空赋值运算符,只有Node.js v15.0.0及以上版本支持。你使用的discord.js v13及更高版本要求Node.js版本≥16.6.0,本地Node.js版本满足要求所以运行正常,但Heroku默认使用的Node.js版本低于要求,无法识别该语法,因此抛出解析错误。
修复方法
- 在项目根目录的
package.json中添加engines字段,指定Node.js版本符合discord.js的要求,配置示例:
{ "name": "kurumi", "version": "1.0.0", "engines": { "node": "16.x" }, "dependencies": { "discord.js": "^14.0.0" }, "scripts": { "start": "node index.js" } }
- 检查根目录的
Procfile文件,将运行类型从web改为worker,避免Heroku的端口健康检测误判进程崩溃:
worker: node index.js
- 将修改后的代码重新提交部署到Heroku,部署完成后在Heroku后台的「资源」页面,关闭web dyno,开启worker dyno即可。
内容的提问来源于stack exchange,提问作者Rayyan Ahsan
相关产品推荐
相关产品推荐

