Not works fs.readFile in node js

oihi08 picture oihi08 · Oct 26, 2015 · Viewed 24.6k times · Source

I have:

 fs.readFile('../services/Prescipcion.xml', "utf8", function (err, data) {
    console.log("err->", err);
    console.log("data", data);
 });

And it logs:

err-> { 
  [Error: ENOENT: no such file or directory, open '../services/Prescipcion.xml']
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '../services/Prescipcion.xml' 
}

I don't understand why this happens.

Answer

xaviert picture xaviert · Oct 26, 2015

The error message says no such file or directory, so at first sight this most likely means the path to the file is incorrect.

Either the filename is incorrect (typo?) or the directory is incorrectly resolved. Take note that a relative path will be resolved against process.cwd():

process.cwd(): Returns the current working directory of the process.

You can try using console.log(process.cwd()) to help you debug the issue.

If the file Prescipcion.xml should be retrieved locally from where the script is run, you can also use the following construct:

fs.readFileSync(path.join(__dirname, '../services') + '/Prescipcion.xml', 'utf8');

__dirname: The name of the directory that the currently executing script resides in.