自己通过stream不数据

我现在正在学习node.jsstream,因此我想编写自己的自定义stream模块。 这是我目前所拥有的:

index.js:

fs = require("fs") var module = require("./module") var ws = fs.createWriteStream("out.txt") fs.createReadStream("in.txt") .pipe(module()) .pipe(ws) 

module.js:

 var Stream = require('stream').Stream; module.exports = function() { var stream = new Stream(); this.writable = true; this.readable = true; stream.write = function(data) { console.log("write") stream.emit("data", data) } stream.end = function() { console.log("end") stream.emit("end") } stream.destroy = function() { console.log("destroy") stream.emit("close") } return stream; } 

in.txt:

 text text text text text text text text text text 

问题是out.txt是空的, stream.write函数从来没有被调用过。 为什么? 如果我注释掉我的中间pipe道是一切正常的!

您的代码中有一个可以轻松修复的错误。

module.js改变:

 this.writable = true; this.readable = true; 

至:

 stream.writable = true; stream.readable = true; 

它会工作。

另外,如果您想了解更多关于如何使用stream的信息,substack会以stream手册的forms创build一个不错的资源。