Node.js:获取"尝试打开未关闭的连接"从子进程调用方法时

时间:2015-03-20 22:34:55

标签: javascript node.js external-process

我收到了“错误:尝试打开未关闭的连接,”,但我不相信这是由于数据库问题......这就是我为什么难过的原因。此错误的大多数解决方案,参考数据库连接问题。

我的目标是执行外部流程。如果进程以退出代码0以外的任何其他方式关闭,我想通过电子邮件发送警报。

我正在使用 child.on('close',函数(代码) ....来获取外部进程的退出值(以“代码”的形式返回)所以如果< strong> code!= 0 我想做点什么......可能会重新运行测试...也许会调用另一种发送电子邮件的方法等。

每当我尝试从 child.on('close')中调用方法时,我会收到错误“尝试打开未关闭的连接。”其中这就是为什么我也在同一个块中处理保存操作。

代码示例:

var spawn = require('child_process').spawn,
        child = spawn('sipp', ['-s', dnis,server, '-sn', scenario, '-m', '1','-i','127.0.0.1','-recv_timeout','1000']);
}
child.on('close',function(code){
     if(code != 0){
         Call().emailAlert(dnis, server, scenario, type, carrier);
     }        
        var TestResults = mongoose.model('test_results', TestResultsSchema);
        // Saving results to MongoDB
        var result = new TestResults({
            testType: type,
            dnis: dnis,
            server: server,
            result: code,
            carrier: carrier,
            date: Date.now()
        });
        result.save(function (err) {if (!err) {console.log ('Successful Save!')}
        else{console.log(err)}});
});

};

如果我删除:

if(code != 0){
     Call().emailAlert(dnis, server, scenario, type, carrier);
 }   

错误消失了。我最好的方法是捕获进程的退出代码,并在此基础上调用Node.js中的其他方法(即通过电子邮件发送警报)?

1 个答案:

答案 0 :(得分:0)

我想我错了。我将mongoose.connect更改为 mongoose.createConnection ,这个特定的错误消失了......但遗憾的是我还有更多的错误。我将在另一个主题中打开主要问题。