我无法让我的node.js Discord Bot(Discord.js Lib)仅运行一个进程。
依赖项:
ansi-colors 3.2.4
discord.js 11.4.2
enmap 4.8.4
esm 3.2.22
nodemon 1.18.11
superagent 5.0.2
uuid 3.3.2
devDependencies:
babel-eslint 10.0.1
eslint-config-airbnb-base 13.1.0
eslint-plugin-import 2.17.2
我的scripts
文件的package.json
属性
{
"scripts": {
"start": "nodemon -r esm index.js"
}
}
注意:esm
是用于运行es6模块的节点模块
在index.js
中:
/**
* my real index.js file has a command handler,
* error handler and much more, as well as a few
* Enmaps for some personal uses, but nothing that
* would make this bot reply to itself
*/
import Enmap from 'enmap';
import { Client } from 'discord.js';
import { config } from 'dotenv';
config();
const client = new Client({ disableEveryone: true });
client.commands = new Enmap
client.on('ready', client => {
console.log('Ready!');
}
client.on('message', message => {
if (message.author.bot) {
return;
}
/** @type {string} */
const prefix = "-";
if (!message.content.startsWith(prefix)) {
return;
}
const args = message.content.slice(prefix.length).split(/\s+/g);
const command = args.shift();
const cmd = client.commands.get(command);
if (!cmd) {
return;
}
cmd.run(message, args);
}
client.login(process.env.CLIENT_TOKEN)
在我的目录中,我的package.json
$ npm start
似乎开始很好,但是随后2、3甚至6个节点进程出现在任务管理器中,并且我的程序正在响应该次数。
如果有3个进程并且我触发了一个事件,则即使我不知道会导致什么原因,它也会触发3次。
从理论上讲,仅应触发一个“消息”事件
杀死当前和其他打开的终端机(Git Bash)中的所有node.js进程
在我的任务管理器中杀死所有进程
运行我的启动脚本而不调用npm
在默认命令提示符下运行我的启动脚本(带有和不带npm)