我非常困惑。Duplex.from()方法可以接受一个对象作为src,并从对象属性readable & writable创建一个双工流:
将
readable和writable转换为流,然后将它们组合成双工,在其中双工将写入可写的并从可读的读取。
为什么我的榜样不起作用?
const { PassThrough, Duplex } = require("stream");
const loopback = new PassThrough();
const duplex = Duplex.from({
writable: loopback,
readable: loopback
});
duplex.on("data", (chunk) => {
console.log("Data on duplex", chunk)
});
duplex.write("Hello World");我的预期结果是创建了一个双工流,如果是的话,输出与输入相同。(与"echo“或”普通通流“相同)
错误消息:
[nodemon] starting `node index.js`
internal/streams/from.js:32
throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable);
^
TypeError [ERR_INVALID_ARG_TYPE]: The "iterable" argument must be an instance of Iterable. Received an instance of Object
at new NodeError (internal/errors.js:322:7)
at from (internal/streams/from.js:32:11)
at Function.Readable.from (internal/streams/readable.js:1368:10)
at Object.<anonymous> (/home/marc/projects/test-stream/index.js:7:23)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12)
at internal/main/run_main_module.js:17:47 {
code: 'ERR_INVALID_ARG_TYPE'
}有人能向我解释为什么我不能从一个对象创建一个双工流吗?
我有点迷失了,因为文档说您可以传递一个对象作为参数,但是错误消息说“必须是Iterable的一个实例”。据我所知,对象是可迭代的。那么这里有什么问题?
发布于 2022-02-14 19:55:35
没关系,我发现了我的错误。
我使用的是一个过时的节点版本:
node -v
v14.19.0我通过nodesource ( node.js )更新到v16:
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs一切如愿以偿。
https://stackoverflow.com/questions/71117529
复制相似问题