Digamos que ejecuto un script de Node en un entorno Linux que contiene lo siguiente:
fs.writeFileSync("output.json", JSON.stringify(data)) Luego, cancelo el script (cmd/ctrl + c) después de que haya comenzado la operación writeFileSync pero antes de que finalice. ¿Existe "salida.json"? Si es así, ¿contiene algún dato?
Hice una prueba rápida en Windows 10 y obtuve algunos resultados interesantes:
fs.openSync y fs.writeSync . Entre ambas llamadas, me tomé el tiempo para encontrar el identificador del archivo en Process Explorer, que luego cerré durante la llamada fs.writeSync . Ahora PE se congeló hasta que se cerró la escritura. Mientras tanto, intenté finalizar el proceso de nodo usando el Administrador de tareas. ¿Resultado? Cada byte todavía estaba escrito en el archivo.ctrl+c . El nodo arroja un buen error e inmediatamente sale, pero el archivo aún se creó con 0 bytes. Sin embargo, su millaje puede variar. especialmente si configura el manejo de señales. No fui tan lejos como para cortar la alimentación o desconectar el disco durante la escritura, aunque en ese momento probablemente dependa del sistema operativo/disco de lo que suceda a continuación. Sin embargo, parece que NodeJS siempre creará el archivo. No es tan sorprendente, ya que fs.openSync('path', 'w') ya hace eso, aunque aún es un poco inesperado, incluso logra crear el archivo (vacío) justo antes de que falle porque no hay suficiente espacio en disco.