Fs.writeFileを使用して兄弟ディレクトリーにファイルに書き込もうとしています。 Sitemap.xml
を同じディレクトリに使用すると、これは問題なく機能しますが、相対パスは使用できません。 public
ディレクトリが存在し、Sitemap.xml
が存在するかどうかに関係なく同じエラーが発生します。
関連するdir構造:
/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'
ノードで相対パスを使用する場合、それらはノードプロセスに関連しています。したがって、node create-sitemap/index.js
ディレクトリから/Users/tomchambers/projects/project/
のようなスクリプトを実行すると、存在しない/Users/tomchambers/projects/public/Sitemap.xml
ファイルが検索されます。
あなたの場合、__dirname
グローバル変数を使用することができます、それは次を返します ドキュメントが言うように :
現在実行中のスクリプトが存在するディレクトリの名前。
したがって、コードは次のようになります。
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");
});