我目前正在学习 Node.js 流,因此我想编写自己的自定义流模块。这是我目前所拥有的:
index.js:
fs = require("fs")
var module = require("./module")
var ws = fs.createWriteStream("out.txt")
fs.createReadStream("in.txt")
.pipe(module())
.pipe(ws)
模块.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
函数从未被调用。为什么会这样?如果我注释掉我的中间管道就一切正常!
最佳答案
您的代码中有一个可以轻松修复的错误。
在module.js
中更改:
this.writable = true;
this.readable = true;
至:
stream.writable = true;
stream.readable = true;
它会起作用。
此外,如果您想了解有关如何使用流的更多信息,子堆栈以 stream handbook 的形式创建了一个很好的资源。 .
关于node.js - 自己的直通流不传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12623124/