nodejs命令行模块没有给出stdout

时间:2015-08-06 06:28:15

标签: node.js npm exec

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

#! /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.

的输出

1 个答案:

答案 0 :(得分:1)

documentation开始,关于你要传递给'exec'的回调

  

'callback' - 当进程终止时用函数调用函数

根据我的理解,在你看到'stdout:'和'stderr:'之前必须终止进程(你必须停止节点进程)。