No pude encontrar ningún recurso en línea que explique por qué me encuentro con este problema, incluso los documentos oficiales de Node JS/referencia API dicen que createWriteStream es un método en fs:
fs.createWriteStream(ruta[, opciones])[origen]#
Todas las demás preguntas de desbordamiento de pila que encontré eran personas que accidentalmente intentaban acceder a fs desde el navegador. Entonces, solo para aclarar, ¡estoy usando Node!
Código de ejemplo:
import fs from 'fs/promises' let ws = fs.createWriteStream("example.png")Salida de código de ejemplo:
file:///workspace/buz/src/error.js:3 let ws = fs.createWriteStream("example.png") ^ TypeError: fs.createWriteStream is not a function at file:///workspace/buz/src/error.js:3:13 at ModuleJob.run (node:internal/modules/esm/module_job:198:25) at async Promise.all (index 0) at async ESMLoader.import (node:internal/modules/esm/loader:385:24) at async loadESM (node:internal/process/esm_loader:88:5) at async handleMainPromise (node:internal/modules/run_main:61:12) Versión del nodo: v16.15.1
Sistema operativo: sistema operativo Mac
Me lo imaginé:
createWriteStream() es una función de fs , pero no de fs/promises !!
No pude encontrar NINGUNA documentación en línea sobre cómo usar createWriteStream() con promesas de fs, por lo que la opción más fácil es importarla desde el fs basado en devolución de llamada normal:
import fs from 'fs/promises' import {createWriteStream} from 'fs' let ws = fs.createWriteStream("example.png") Leí la documentación de Node en fs y revisé todos los métodos en la API de fs/promises y ninguno de ellos devolvió un <WriteStream> . Entonces, a partir de hoy, parece que no hay forma de solucionar este problema sin importar cosas de la API fs normal.
Actualización: se modificó la redacción para no usar la palabra síncrono al describir la API fs basada en devolución de llamada