我需要一些帮助来了解流在 NodeJS 中的工作原理
我解释说,我需要编写一个调用 UNIX 进程(带有spawn
)的模块,并且我想stdout
将此进程的重定向到可读流。
我希望这种行为适用exports
于可读流并允许另一个模块读取它们。
为此,我编写了一小段代码:
var spawn = require('child_process').spawn
var Duplex = require('stream').Duplex;
var stream = new Duplex;
var start = function() {
ps = spawn('mycmd', [/*... args ...*/]);
ps.stdout.pipe(stream);
};
exports.stream = stream;
exports.start = start;
但是如果我使用这个模块,我会抛出一个异常,说明流没有实现 _read 方法。
你能帮我解决这个问题吗?
提前致谢。
[编辑] 我尝试了创建 Stream 对象的解决方案,但这不起作用,这里是代码:
var spawn = require('child_process').spawn;
var Stream = require('stream');
var ps = null;
var audio = new Stream;
audio.readable = audio.writable = true;
var start = function() {
if(ps == null) {
ps = spawn('mycmd', []);
ps.stdout.pipe(stream);
}
};
var stop = function() {
if(ps) {
ps.kill();
ps = null;
}
};
exports.stream = stream;
exports.start = start;
exports.stop = stop;
但是当我尝试收听流时,我遇到了一个新错误:
_stream_readable.js:583
var written = dest.write(chunk);
^
TypeError: Object #<Stream> has no method 'write'