自己通过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一个不错的资源。