【发布时间】:2020-08-22 04:45:28
【问题描述】:
所以我试图让我的机器人在遇到错误时完全重新启动。我不让它筛选连接错误的原因是,每当我遇到互联网问题时,代码开始重复多次,因为原始节点进程尚未终止,技术上我可以修复,但其他连接到外部api 也停止工作。所以忽略修复单个问题,我只想完全重新启动。
我目前正在做的是使用节点child_process,这个功能:
spawn(process.argv.shift(), process.argv, {
cwd: process.cwd(),
detached : true,
stdio: "inherit"
});
process.exit();
我知道 stdio 继承什么都不做,因为它退出了父进程,但它并没有真正改变任何东西来让它忽略所以我只是离开了它。基本上这在理论上是可行的,如果我使用命令来执行它,我可以一遍又一遍地执行它,它会正常工作,单一的不和谐客户端,没有重复,它已经启动,我只是无法监控它,因为我原来的终端已断开连接,我可以使用命令退出当前进程,因此它不会卡住,因为我没有 ctrl-c 的终端。但是一旦付诸实践,通过断开我的互联网来执行 bot.on("error") 中的功能似乎有效,它结束了第一个过程,但是在重新获得互联网后,没有连接客户端。
我的猜测是:bot.on("error") 不会在下一个过程中重新执行,因为没有创建不和谐的客户端。
所以我不知道我是否让这太复杂了,或者我是否需要添加更多内容。如果这是最好的方法,那么我需要解决的就是等到我有互联网回来,然后再做一个新的过程或类似的东西。我没有受过摆弄节点的教育,所以如果有任何答案对初学者友好(主要针对节点),我会非常感激。
【问题讨论】:
标签: javascript node.js discord.js