Node.js をいじっていたら、ちょっとした問題が見つかりました。 というディレクトリにスクリプトがありますdata
。スクリプトでサブディレクトリ内のサブディレクトリにあるファイルにデータを書き込むようにしたいのですdata
が、次のエラーが発生します。
{ [Error: ENOENT, open 'D:\data\tmp\test.txt'] errno: 34, code: 'ENOENT', path: 'D:\\data\\tmp\\test.txt' }
コードは次のとおりです。
var fs = require('fs');
fs.writeFile("tmp/test.txt", "Hey there!", function(err) {
if(err) {
console.log(err);
} else {
console.log("The file was saved!");
}
});
ファイルへの書き込みが存在しない場合、Node.js でディレクトリ構造を作成する方法を見つけるのを手伝ってくれる人はいますか?
ベストアンサー1
ノード > 10.12.0
fs.mkdir次のようなオプションを受け入れるようになりました{ recursive: true }
:
// Creates /tmp/a/apple, regardless of whether `/tmp` and /tmp/a exist.
fs.mkdir('/tmp/a/apple', { recursive: true }, (err) => {
if (err) throw err;
});
または約束して:
fs.promises.mkdir('/tmp/a/apple', { recursive: true }).catch(console.error);
ノート、
多くの場合
fs.mkdirSync
、fs.mkdir
末尾にスラッシュを付けても無害であり、効果もありません。
mkdirSync/mkdir no は何も害を与えず、ディレクトリがすでに存在する場合は、存在を確認する必要はありません。
ノード <= 10.11.0
これは次のようなパッケージで解決できます。mkdirpまたはfs-エクストラパッケージをインストールしたくない場合は、以下の Tiago Peres França の回答を参照してください。