1. ホーム
  2. javascript

[解決済み】Node.jsでファイルへの書き込み時にディレクトリを作成する。

2022-04-12 21:06:18

質問

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がファイルへの書き込みを終了しない場合に、ディレクトリ構造を作成させる方法について、どなたか教えてください。

解決方法は?

ノード > 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);

ノード <= 10.11.0

のようなパッケージで解決できます。 mkdirp または fs-extra . パッケージをインストールしたくない場合は、以下のTiago Peres Françaの回答を参照してください。