Heroku 上的 Discord 机器人抛出错误:agent ??= new https.Agent

新Ac*_*yyy 5 javascript heroku node.js discord.js

这与我的第一个问题有关。我更新了所有代码。在我的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);
});
Run Code Online (Sandbox Code Playgroud)

Procfile:

worker: node bot.js
Run Code Online (Sandbox Code Playgroud)

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"
  }
Run Code Online (Sandbox Code Playgroud)

.env:

DISCORD_BOT= TOKEN
Run Code Online (Sandbox Code Playgroud)

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

2021-12-22T03:13:05.436081 + 00:00应用程序[worker.1]:代理?? =新的https.Agent({...this.client.options.http.agent,keepAlive:true});

2021-12-22T03:13:05.436082+00:00 应用程序[worker.1]: ^^^

2021-12-22T03:13:05.436082+00:00 应用程序[worker.1]:

2021-12-22T03:13:05.436082+00:00 app[worker.1]: SyntaxError: 意外的标记 '??='

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

Zso*_*ros 4

该错误来自discord.js,这是因为您使用的是旧版本的 Node.js。逻辑空赋值运算符 (??= )节点 v15+ 中可用

您可能认为您正在使用最新版本的 Node.js,但 Heroku 表示“如果引擎中未指定 Node 版本,则将使用 14.x 版本”。您可以engines向文件添加一个 proppackage.json来指定您需要的版本。由于discord.js v13需要node.js v16.6+,您可以添加以下内容:

  "engines": {
    "node": "16.6"
  }
Run Code Online (Sandbox Code Playgroud)

或者要请求最新的 v16,请添加以下内容:

  "engines": {
    "node": "16.x"
  }
Run Code Online (Sandbox Code Playgroud)