Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将node.js脚本作为多个脚本运行?互不影响_Javascript_Node.js - Fatal编程技术网

Javascript 如何将node.js脚本作为多个脚本运行?互不影响

Javascript 如何将node.js脚本作为多个脚本运行?互不影响,javascript,node.js,Javascript,Node.js,我有一个node.js应用程序,它获取一些bot电报令牌,并将它们作为bot运行 我使用电传模块 但是,当一个机器人接收到太多请求或抛出错误后崩溃时,其他机器人就会发生这种情况 我能做些什么来解决这个问题 我希望机器人彼此分开 一种方法是复制我的代码并分别以多脚本的形式运行bot 但我有很多机器人,所以这是不可能的 以下是我运行机器人程序的代码: const Telegraf = require('telegraf'); var {Robots} = require('./model/model

我有一个node.js应用程序,它获取一些bot电报令牌,并将它们作为bot运行
我使用电传模块
但是,当一个机器人接收到太多请求或抛出错误后崩溃时,其他机器人就会发生这种情况
我能做些什么来解决这个问题
我希望机器人彼此分开
一种方法是复制我的代码并分别以多脚本的形式运行bot
但我有很多机器人,所以这是不可能的

以下是我运行机器人程序的代码:

const Telegraf = require('telegraf');
var {Robots} = require('./model/models/robots');



var botsList = [];
setInterval(() => {
    Robots.find({bot_type: 'group manager'}).then((res) => {
        if(res.length > 0){
            var tokens = [];
            for(var i = 0 ; i < res.length ; i++){
                var newToken = res[i].token;
                tokens.push(newToken);
            }

            var bot = [];

            tokens.map(token => {
                if(!botsList.includes(token)){
                    botsList.push(token);
                    var botUserId = token.split(':')[0];

                    bot[botUserId] = new Telegraf(token);

                    module.exports = {
                        bot
                    };

                    const Commands = require('./controller/commands/commands.js');

                    bot[botUserId].on('text', (ctx) => {
                        Commands.executeCommand(bot[botUserId], ctx);
                    });

                    bot[botUserId].startPolling();
                }
            });
        }
    }).catch(console.log);
}, 5000);
const Telegraf=require('Telegraf');
var{Robots}=require('./model/models/Robots');
var-botsList=[];
设置间隔(()=>{
Robots.find({bot_type:'groupmanager'})。然后((res)=>{
如果(分辨率长度>0){
var标记=[];
对于(变量i=0;i{
如果(!botsList.includes(令牌)){
botsList.push(令牌);
var botUserId=token.split(“:”)[0];
bot[botUserId]=新的Telegraf(令牌);
module.exports={
机器人程序
};
const Commands=require('./controller/Commands/Commands.js');
bot[botUserId].on('text',(ctx)=>{
executeCommand(bot[botUserId],ctx);
});
bot[botUserId].startPolling();
}
});
}
}).catch(console.log);
}, 5000);

如果您只希望一个代理中的错误不会影响整个脚本,那么您可以使用脚本的处理程序处理该错误

process.on('uncaughtException',console.log);
如果您想更进一步,为每个要运行的bot创建子进程。使用节点提供的模块

const fork=require('child_process')。fork;
fork('./bot.js',标记);
在这里,
bot.js
可以包含所有与bot相关的代码

希望这有帮助