ENOENT error when using fs.writeFile
fs, node.js
Solution
When you use relative paths in node, they're related to the node process. So, if you run your script like `node create-sitemap/index.js` from the `/Users/tomchambers/projects/project/` directory, it'll look for the `/Users/tomchambers/projects/public/Sitemap.xml` file, which doesn't exist.
In your case, you could use the `__dirname` global variable, that returns, as the docs say:
The name of the directory that the currently executing script resides in.
So your code should looks like this:
var path = require('path');
fs.write(path.join(__dirname, '../public/Sitemap.xml'), data.toString(), function(err) {
if (err) throw err;
console.log("Wrote sitemap to XML");
});
Problem
Trying to write to a file using fs.writeFile into a sibling directory. This works fine when using `Sitemap.xml` into the same directory, but not with the relative path. The `public` directory exists and it gives the same error whether or not `Sitemap.xml` exists. Relevant dir structure: ``` /public Sitemap.xml app files /create-sitemap index.js - file containing code below app.js ``` ``` fs.write('../public/Sitemap.xml', data.toString(), function(err) { if (err) throw err; console.log("Wrote sitemap to XML"); }); Toms-MacBook-Pro:moviehunter tomchambers$ node create-sitemap/index.js /Users/tomchambers/projects/project/create-sitemap/index.js:88 if (err) throw err; ^ Error: ENOENT, open '../public/Sitemap.xml' ```