Nodejs命令行模块不给出标准输出



我已经设置了一个命令行节点模块,当我运行它时,其中一个任务是启动服务器并记录到控制台。然而,我发现,虽然它可以很好地启动我的服务器,但它没有将输出发送到控制台。

#! /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:'之前终止(您必须停止节点进程)。

最新更新