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"
}
这与我的第一个问题有关。我更新了所有代码。在我的 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"
}