Discord bot on Heroku throws an error: agent ??= new https.Agent

Discord bot on Heroku throws an error: agent ??= new https.Agent

这与我的第一个问题有关。我更新了所有代码。在我的 bot.js 中是:

require('dotenv').config();

let ver = process.env.DISCORD_BOT;

client.once('ready', async () => {
  if (ver === 'production') {
    client.user.setActivity(`in code land`, { type: 'PLAYING' });
  } else {
    client.user.setActivity(`over ${client.guilds.cache.size} server(s)`, {
      type: 'WATCHING',
      status: 'IDLE',
    });
  }
  console.log(`Logged in as ${client.user.tag}!`);
  console.log(`the prefix is ` + prefix);
});

Procfile:

worker: node bot.js

package.json:

 "scripts": {
    "start": "node .",
    "test": "echo \"Error: no test specified\" && exit 1",
    "production": "NODE_ENV=production&&npm start",
    "development": "set NODE_ENV=development&&npm start"
  }

.env:

DISCORD_BOT= TOKEN

当我检查 Heroku 应用程序日志时,抛出以下错误:

2021-12-22T03:13:05.436081+00:00 app[worker.1]: agent ??= new https.Agent({ ...this.client.options.http.agent, keepAlive: true });

2021-12-22T03:13:05.436082+00:00 app[worker.1]: ^^^

2021-12-22T03:13:05.436082+00:00 app[worker.1]:

2021-12-22T03:13:05.436082+00:00 app[worker.1]: SyntaxError: Unexpected token '??='

我尝试搜索 "SyntaxError: Unexpected token '??='"",每个结果都建议将 node.js 更新为 v16- 17 但我已经在使用 Discord.js 和 Node.js 的最新版本。

错误来自 discord.js,这是因为您使用的是 Node.js 的旧版本。 logical nullish assignment operator (??=) is only available in node v15+.

您可能认为您使用的是最新版本的 Node.js,但 Heroku 表示 “如果引擎中未指定 Node 版本,14.x 发布将被使用。您可以在 package.json 文件中添加一个 engines 属性来指定您需要的版本。作为discord.js v13 requires node.js v16.6+,您可以添加以下内容:

  "engines": {
    "node": "16.6"
  }

或者要请求最新的 v16,请添加:

  "engines": {
    "node": "16.x"
  }