Luc*_*aud 2 mongoose mongodb node.js typescript
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;
Run Code Online (Sandbox Code Playgroud)
read.pipe(wst)导致:“GridFSBucketWriteStream”类型的参数不可分配给“WritableStream”类型的参数。
wst是一种GridFSBucketWriteStream类型,应该可以转换为WritableStream类GridFSBucketWriteStream实现NodeJS.WritableStream。
当然read.pipe(wst as any)可以解决这个问题,但我想避免它。
read.pipe(wst as NodeJS.WritableStream)也不工作。
版本:
预先感谢您的帮助!
更新:这个问题已经在 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 的兼容性。但这个解决方法目前对我有帮助。
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |