callbackexception

我写了一个简单的NodeJS程序来执行一个shell脚本。 我分出一个孩子,并尝试执行脚本。 我已经在退出时给孩子回电了,如下所示。 但是当我尝试运行程序的时候却抛出了一个exception。 我哪里错了?

var exec = require('child_process').exec; function callXmlAgent(callback) { try { var child = exec('./a.sh'); var response = { stdout: '', stderr: '', errCode: -1 }; child.stdout.on('data', function (data) { response.stdout += data; }); child.stderr.on('data', function (data) { response.stderr += data; }); child.on('close', function (errCode) { if (errCode) { response.errCode = errCode; } }); child.on('exit', callback(response)); process.on('exit', function () { // If by chance the parent exits, the child is killed instantly child.kill(); }); } catch(exception) { console.log(exception); } } function foo(response) { console.log(response) }; callXmlAgent(foo); 

我得到的输出是:

 { stdout: '', stderr: '', errCode: -1 } [TypeError: listener must be a function] 

  • Nodejs - 进程在退出时挂起(Ctrl + C)
  • Node:child_process.js:427 throw new TypeError(“This handle type can not be sent”);
  • node.js在subprocess中运行函数?
  • child_process.spawn标准输出块
  • 切换到subprocess标准输出并返回
  • 如何使用chai和mochatestingsubprocess?
  • 如何检查在NodeJS中是否成功创buildsubprocess
  • Node.js的exec事件不会在Promise内部触发
  • 使用以下代码修改子出口事件:

     child.on('exit', function() { callback(response); }); 

    现在它不会再抛出错误了,但请注意,使用asynchronous数据并不能保证执行的顺序,所以您可能会有意想不到的结果。

    问题是你不能通过另一个函数中的parameter passing函数。 你必须创build一个匿名函数并发送它里面的参数。