我已经设置了一个命令行节点模块,当我运行它时,其中一个任务是启动服务器并登录到控制台。但是我发现虽然它启动我的服务器很好,但它不会将输出发送到控制台。
#! /usr/bin/env node
var userArgs = process.argv.slice(2);
var searchPattern = userArgs[0];
if(userArgs[0] === "start"){
var exec = require('child_process').exec;
exec('node ./server.js',
function(err, stdout, stderr) {
console.log('stdout: ', stdout);
console.log('stderr: ', stderr);
if (error !== null) {
console.log('exec error: ', error);
}
}
);
}
因此,如果我npm link
我的模块然后运行mymodule start
它启动服务器正常,但我没有提到控制台的输出。
然而,如果我只运行node server.js
,我会得到server listening on http://localhost:5000.
答案 0 :(得分:1)
从documentation开始,关于你要传递给'exec'的回调
'callback' - 当进程终止时用函数调用函数
根据我的理解,在你看到'stdout:'和'stderr:'之前必须终止进程(你必须停止节点进程)。