问题描述
2021-12-02t02:42:45.888858 00:00 app[worker.1]: /app/node_modules/discord.js/src/rest/apirequest.js:33 2021-12-02t02:42:45.888875 00:00 app[worker.1]: agent ??= new https.agent({ ...this.client.options.http.agent, keepalive: true }); 2021-12-02t02:42:45.888876 00:00 app[worker.1]: ^^^ 2021-12-02t02:42:45.888876 00:00 app[worker.1]: 2021-12-02t02:42:45.888877 00:00 app[worker.1]: syntaxerror: unexpected token '??='
我在尝试启动新的 discord.js v13 heroku 机器人时收到此错误.
i am receiving this error while trying to start a fresh discord.js v13 heroku bot.
我的 procfile 状态:worker: node src/index.js
my procfile states: worker: node src/index.js
我添加了我的 .env 并配置了机器人的启动方式,而不是使用 npm start.正如您可能推断的那样,我的代码中的任何地方都没有 ??= .我该如何解决这个问题?
i have added my .env and configured how the bot starts, instead of using npm start. as you can probably deduce, i do not have a ??= anywhere in my code. how can i fix this issue?
推荐答案
错误来自discord.js,这是因为您使用的是旧版本的node.js.逻辑空赋值运算符 (??=) 仅 在节点 v15 中可用.
the error is coming from discord.js and it's because you're using an older version of node.js. the logical nullish assignment operator (??=) is only available in node v15 .
heroku 表示 如果引擎中未指定 node 版本,将使用 14.x 版本".您可以在 package.json 文件中添加 engines 属性来指定 node.js 的版本.由于 discord.js v13 需要 node.js v16.6 ,您可以添加以下内容:
heroku says that "if a node version isn’t specified in the engine, the 14.x release will be used". you can add an engines prop to your package.json file to specify the version of node.js. as discord.js v13 requires node.js v16.6 , you can add the following:
"engines": { "node": "16.6" }
或者请求最新的 v16,添加这个:
or to request the latest v16, add this:
"engines": { "node": "16.x" }