最近无法将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)
也不工作。
版本:
- 猫鼬:6.1.4
- 打字稿:4.1.2
- 节点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
接口中的节点16和节点17之间。end
方法用于返回void
,现在返回this
。
您可以通过运行指定所需节点类型的版本
npm install --save-dev @types/node@16
从长远来看,mongodb Node驱动程序项目需要修复其与Node 17的兼容性。但这个变通办法暂时帮了我一把。