node.js - readfilesync - readfile javascript
writeFile no existe tal archivo o directorio (4)
En realidad, el mensaje de error para los nombres de archivo que no están permitidos en el sistema Linux / Unix aparece con el mismo error, que es extremadamente confuso. Por favor verifique el nombre del archivo si tiene alguno de los caracteres reservados. Estos son los caracteres reservados /,>, <, |,:, y para el sistema Linux / Unix. Para una buena lectura siga este link .
Tengo un archivo ( data.file
una imagen), me gustaría guardar esta imagen. Ahora una imagen con el mismo nombre podría existir antes. Me gustaría sobrescribir si es así o crearlo si no existe desde antes. Leí que la bandera "w" debería hacer esto.
código:
fs.writeFile(''/avatar/myFile.png'', data.file, {
flag: "w"
}, function (err) {
if (err) {
return console.log(err);
}
console.log("The file was saved!");
});
error:
{ [Error: ENOENT: no such file or directory, open ''/avatar/myFile.png'']
errno: -2,
code: ''ENOENT'',
syscall: ''open'',
path: ''/avatar/myFile.png'' }
Muchos de nosotros estamos recibiendo este error porque la ruta principal no existe. Por ejemplo, tiene el directorio /tmp
disponible pero no hay una carpeta "foo" y está escribiendo en /tmp/foo/bar.txt
.
Para resolver esto, puedes usar:
var mkdirp = require(''mkdirp'');
var fs = require(''fs'');
var getDirName = require(''path'').dirname;
function writeFile(path, contents, cb) {
mkdirp(getDirName(path), function (err) {
if (err) return cb(err);
fs.writeFile(path, contents, cb);
});
}
Fuente y discusión completa: https://.com/a/16317628/1737158
O si tiene un entorno donde puede usar async / await:
const mkdirp = require(''mkdirp'');
const fs = require(''fs'');
const writeFile = async (path, content) => {
await mkdirp(path);
await fs.writeFileSync(path, content);
}
Probablemente esto se deba a que está intentando escribir en la raíz del sistema de archivos en lugar de su directorio de aplicaciones ''/avatar/myFile.png''
-> __dirname + ''/avatar/myFile.png''
debería hacer el truco, también verifique si existe la carpeta. node.js no creará la carpeta principal para usted.
Resolví un problema similar cuando intentaba crear un archivo con un nombre que contenía caracteres que no están permitidos. Cuidado con eso también porque da el mismo mensaje de error.