Recientemente, la conversión de GridFSBucketWriteStream al tipo WritableStream se volvió imposible y genera un error de tipos.
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) conduce a: El argumento de tipo 'GridFSBucketWriteStream' no se puede asignar al parámetro de tipo 'WritableStream'.
wst es un tipo GridFSBucketWriteStream y debería poder convertirse en WritableStream ya que la clase GridFSBucketWriteStream implementa NodeJS.WritableStream .
Por supuesto read.pipe(wst as any) resuelve el problema, pero me gustaría evitarlo.
read.pipe(wst as NodeJS.WritableStream) tampoco funciona.
Versiones:
Gracias por adelantado por la ayuda !
ACTUALIZACIÓN: este problema se resolvió desde entonces (aproximadamente 6 horas después de mi respuesta a continuación) con la versión 4.3.0 de mongodb. (Aquí estaba el informe de error: jira.mongodb.org/browse/NODE-3843 )
Me encontré con el mismo problema y encontré una solución. Estaba instalando implícitamente @types/node versión 17.0.8 (consulte @types/node/package.json en node_modules). El cambio de última hora es entre el Nodo 16 y el Nodo 17 en la interfaz WritableStream . El método end solía devolver void y ahora devuelve this .
Puede especificar la versión de los tipos de nodos que desea ejecutando:
npm install --save-dev @types/node@16
Parece que, a largo plazo, el proyecto del controlador del nodo mongodb necesita corregir su compatibilidad con el nodo 17. Pero esta solución me ayudó por ahora.