SyntaxError:在 Heroku 上托管 Discord 机器人时出现意外的令牌 '??='

Posted

技术标签:

【中文标题】SyntaxError:在 Heroku 上托管 Discord 机器人时出现意外的令牌 \'??=\'【英文标题】:SyntaxError: Unexpected token '??=' when hosting a Discord bot on herokuSyntaxError:在 Heroku 上托管 Discord 机器人时出现意外的令牌 '??=' 【发布时间】:2021-12-19 03:52:14 【问题描述】:

我想托管一个我在 Heroku 上创建(使用 Node.js)的不和谐机器人,但抛出了那个错误:

2021-11-05T00:00:10.334347+00:00 app[web.1]: > node .
2021-11-05T00:00:10.334348+00:00 app[web.1]: 
2021-11-05T00:00:10.393407+00:00 app[web.1]: /app/node_modules/discord.js/src/rest/APIRequest.js:33
2021-11-05T00:00:10.393408+00:00 app[web.1]:     agent ??= new https.Agent( ...this.client.options.http.agent, keepAlive: true );
2021-11-05T00:00:10.393409+00:00 app[web.1]:           ^^^
2021-11-05T00:00:10.393409+00:00 app[web.1]: 
2021-11-05T00:00:10.393409+00:00 app[web.1]: SyntaxError: Unexpected token '??='
2021-11-05T00:00:10.393412+00:00 app[web.1]:     at wrapSafe (internal/modules/cjs/loader.js:1001:16)
2021-11-05T00:00:10.393413+00:00 app[web.1]:     at Module._compile (internal/modules/cjs/loader.js:1049:27)
2021-11-05T00:00:10.393413+00:00 app[web.1]:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
2021-11-05T00:00:10.393413+00:00 app[web.1]:     at Module.load (internal/modules/cjs/loader.js:950:32)
2021-11-05T00:00:10.393414+00:00 app[web.1]:     at Function.Module._load (internal/modules/cjs/loader.js:790:12)
2021-11-05T00:00:10.393414+00:00 app[web.1]:     at Module.require (internal/modules/cjs/loader.js:974:19)
2021-11-05T00:00:10.393414+00:00 app[web.1]:     at require (internal/modules/cjs/helpers.js:93:18)
2021-11-05T00:00:10.393415+00:00 app[web.1]:     at Object.<anonymous> (/app/node_modules/discord.js/src/rest/RESTManager.js:4:20)
2021-11-05T00:00:10.393415+00:00 app[web.1]:     at Module._compile (internal/modules/cjs/loader.js:1085:14)
2021-11-05T00:00:10.393415+00:00 app[web.1]:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
2021-11-05T00:00:10.400407+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2021-11-05T00:00:10.400581+00:00 app[web.1]: npm ERR! errno 1
2021-11-05T00:00:10.403958+00:00 app[web.1]: npm ERR! discord-bot@1.0.0 start: `node .`
2021-11-05T00:00:10.403998+00:00 app[web.1]: npm ERR! Exit status 1
2021-11-05T00:00:10.404053+00:00 app[web.1]: npm ERR! 
2021-11-05T00:00:10.404092+00:00 app[web.1]: npm ERR! Failed at the discord-bot@1.0.0 start script.
2021-11-05T00:00:10.404140+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2021-11-05T00:00:10.408367+00:00 app[web.1]: 
2021-11-05T00:00:10.408447+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2021-11-05T00:00:10.408486+00:00 app[web.1]: npm ERR!     /app/.npm/_logs/2021-11-05T00_00_10_404Z-debug.log
2021-11-05T00:00:10.592782+00:00 heroku[web.1]: Process exited with status 1
2021-11-05T00:00:10.917668+00:00 heroku[web.1]: State changed from starting to crashed

这是我的 package.json:

  "name": "discord-bot",
  "version": "1.0.0",
  "description": "",
  "main": "src/index.js",
  "scripts": 
    "start": "node .",
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "nodemon src/index.js"
  ,
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": 
    "cli": "^1.0.1",
    "discord.js": "^13.3.1",
    "discord.js-commando": "^0.12.3"
  ,
  "devDependencies": 
    "nodemon": "^2.0.14"
  
 

我也添加了一个 procfile:worker: node src/index.js

我有 Node.js 最新版本 (16.0)

我应该怎么做才能修复这个错误?

【问题讨论】:

嗨,源代码中可能有一些杂散的 unicode 字符吗?也许这可能会引起人们的兴趣***.com/questions/46516153/… 而不是x ??= y,尝试使用x ?? (x = y) 无效分配相对较新,但应该从Node 15.0 开始可用。 developer.mozilla.org/en-US/docs/Web/javascript/Reference/… @jspcal 可能不是问题:/ 【参考方案1】:

对我来说,您似乎没有传递令牌。

如果您从文件中获取令牌,请确保它被正确读取。

【讨论】:

错误与 Discord 令牌无关。 我通过了,阅读正确【参考方案2】:

将节点更新到 >= v16.6.0。

https://github.com/discordjs/discord.js/issues/5119

【讨论】:

如果我改为更新到 17.0.1,这会起作用吗? 是的,17.0.1 > 16.6.0。 我这样做并更新了 discord.js,错误已修复,谢谢! @MatheusChiarelli 记得标记对您有帮助的答案,以便其他有类似问题的人可以更快地找到答案。【参考方案3】:

我刚刚将 discord.js 更新到版本 12.5.3 并且工作正常!我感谢所有的答案

【讨论】:

感谢您跟进解决方案!

以上是关于SyntaxError:在 Heroku 上托管 Discord 机器人时出现意外的令牌 '??='的主要内容,如果未能解决你的问题,请参考以下文章

无法在heroku上托管discord bot(js)

在哪个 IP 上托管 http 服务器? (Heroku,没有框架)

在 Heroku 上托管一个静态网站需要多少台测功机?

在 Heroku 上托管时,Puppeteer discord bot 不断崩溃

Java 聊天程序在本地主机上工作,但在 Heroku 上托管时不能

如何在 Heroku.com 上托管的 Redmine 上安装插件