node.js - 如何禁用nodejs ChildProcess.spawn stdout 缓冲区?

标签 node.js buffer spawn

我正在尝试使用以下代码拦截 compass watch 输出:

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

var child = spawn('compass', ['watch'], { cwd: process.cwd() });

process.on('data', function (data) {
    console.log('[log] ' + data);
});

我的问题是:我必须保存文件两次才能在标准输出中显示覆盖消息。这是一个示例输出...

node compass.js之后

[log] >>> Compass is watching for changes. Press Ctrl-C to Stop.

保存文件后

[log] >>> Change detected at 20:17:19 to: components/_avatar.scss

第二次保存文件后

[log] overwrite assets/css/modules/projects.css 
>>> Change detected at 20:17:26 to: components/_avatar.scss

看起来“覆盖 asset/css/modules/projects.css”正在缓冲。有什么办法可以避免这个缓冲区吗?

最佳答案

正如我刚刚发现的,指南针(或者可能是 OSX)才是真正的罪魁祸首。如果我运行 compass watch 输出会立即更新。但是,如果我运行 compass watch > out.log ,在 Node 上观察到的相同行为就会发生。

关于node.js - 如何禁用nodejs ChildProcess.spawn stdout 缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366051/

相关文章:

Javascript根据更大的日期键从数组中删除对象

node.js - 更新 Mongoose 中的模式以添加新属性

linux - fprintf 如何在 Linux 中阻塞?

c - scanf 不在 while 循环中等待用户输入

node.js - 如何在不阻塞父进程的 stdin 的情况下生成子进程?

node.js - Node 生成标准输出未定义

node.js - 无法安装express和packages

node.js - bundle.js :50930 Uncaught TypeError: require(. ..).createServer 不是函数

c# - 流流 = WriteableBitmap.PixelBuffer.AsStream() 丢失

node.js - 尝试从 Node 生成 ruby​​ sass