gpt4 book ai didi

node.js - 将 'GridFSBucketWriteStream' 转换为类型 'WritableStream' 不可能吗?

转载 作者:行者123 更新时间:2023-12-03 08:11:56 24 4
gpt4 key购买 nike

最近,将 GridFSBucketWriteStream 转换为 WritableStream 类型变得不可能,并导致类型错误。

const wst = svcMng.DBService.projectImageGrid.openUploadStream(image.name);
const uploadPromise = new Promise((resolve, reject) => {
const read = new Readable({
read() {
this.push(image.data);
this.push(null);
}
});

read.on('error', (err) => {
reject(err);
});
read.on('end', () => {
resolve(null);
});
read.pipe(wst);
});
await uploadPromise;

read.pipe(wst) 导致:“GridFSBucketWriteStream”类型的参数不可分配给“WritableStream”类型的参数。

wst 是一个 GridFSBucketWriteStream 类型,并且应该可以转换为 WritableStream,因为 GridFSBucketWriteStream 类实现了 NodeJS .WritableStream.

当然read.pipe(wst as any)解决了这个问题,但我想避免它。

read.pipe(wst as NodeJS.WritableStream) 也不起作用。

版本:

  • Mongoose :6.1.4
  • typescript :4.1.2
  • Node v12.16.3

提前感谢您的帮助!

最佳答案

更新:这个问题已经在 mongodb 版本 4.3.0 中得到解决(大约在我回答下面 6 小时后)。 (这是错误报告:jira.mongodb.org/browse/NODE-3843)

我遇到了同样的问题并找到了解决方法。它隐式安装@types/node版本17.0.8(请参阅node_modules中的@types/node/package.json)。重大更改发生在 WritableStream 接口(interface)中的 Node 16 和 Node 17 之间。 end 方法过去返回 void,现在返回 this

您可以通过运行指定所需的 Node 类型版本:

npm install --save-dev @types/node@16

从长远来看,mongodb Node 驱动程序项目需要修复其与 Node 17 的兼容性。但这个解决方法目前对我有帮助。

关于node.js - 将 'GridFSBucketWriteStream' 转换为类型 'WritableStream' 不可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70589349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com