自己通过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一个不错的资源。
- 噶:无法find相对path的模块
- 嵌套的预先加载sequelize(belongsTo和belongsToMany在同一个查询中)
- 有没有等效的asynchronous库,但对于node.js的child_processes
- node.js模块:Async vs Fibers.promise vs Q_oper8
- ORA-12514错误,同时使用节点oracle-db npm packagae
- 每个节点模块中的请求variables? (快速查看帮手)
- 如何在android或ios移动设备上运行Nodejs运行时
- nvm ls-remote命令导致“N / A”
- 如何与快递和socket.ioauthentication与TOKENS而不是与COOKIES。