相关疑难解决方法(0)

执行:显示标准输出"直播"

我有这个简单的脚本:

var exec = require('child_process').exec;

exec('coffee -cw my_file.coffee', function(error, stdout, stderr) {
    console.log(stdout);
});
Run Code Online (Sandbox Code Playgroud)

我只是执行一个命令来编译一个咖啡脚本文件.但是stdout永远不会在控制台中显示,因为命令永远不会结束(因为咖啡的-w选项).如果我直接从控制台执行命令,我得到这样的消息:

18:05:59 - compiled my_file.coffee
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否可以使用node.js exec显示这些消息?如果有,怎么样?!

谢谢

node.js coffeescript

154
推荐指数
7
解决办法
9万
查看次数

如何使用Bluebird宣传Node的child_process.exec和child_process.execFile函数?

我在Node.js下使用Bluebird promise库,这太棒了!但我有一个问题:

如果你看一下Node的child_process.execchild_process.execFile的文档,你会发现这两个函数都返回了一个ChildProcess对象.

那么推荐这种功能的方法是什么?

请注意以下工作(我得到一个Promise对象):

var Promise = require('bluebird');
var execAsync = Promise.promisify(require('child_process').exec);
var execFileAsync = Promise.promisify(require('child_process').execFile);
Run Code Online (Sandbox Code Playgroud)

但是如何才能访问原始Node.js函数的原始返回值?(在这些情况下,我需要能够访问最初返回的ChildProcess对象.)

任何建议将不胜感激!

编辑:

下面是一个使用child_process.exec函数返回值的示例代码:

var exec = require('child_process').exec;
var child = exec('node ./commands/server.js');
child.stdout.on('data', function(data) {
    console.log('stdout: ' + data);
});
child.stderr.on('data', function(data) {
    console.log('stderr: ' + data);
});
child.on('close', function(code) {
    console.log('closing code: ' + code);
});
Run Code Online (Sandbox Code Playgroud)

但是,如果我将使用exec函数的promisified版本(上面的execAsync),那么返回值将是一个promise,而不是ChildProcess对象.这是我正在谈论的真正问题.

javascript node.js promise bluebird

57
推荐指数
6
解决办法
4万
查看次数

标签 统计

node.js ×2

bluebird ×1

coffeescript ×1

javascript ×1

promise ×1