我已经设置了一个命令行节点模块,当我运行它时,其中一个任务是启动服务器并记录到控制台。然而,我发现,虽然它可以很好地启动我的服务器,但它没有将输出发送到控制台。
#! /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.
从文档中,关于你传递给'exec'的回调
'callback' -进程终止时调用的函数和输出
根据我的理解,进程必须在您看到'stdout:'和'stderr:'之前终止(您必须停止节点进程)。