最近、Node.js を使用しているときに、mkdir エラーの問題が発生しました。 fs.mkdir() メソッドを使用して新しいディレクトリを作成しようとすると、システムは次のエラー メッセージをスローしました。
Error: ENOENT: no such file or directory, mkdir 'path/to/new/directory'
最初に思いついたのはパスの問題でした。そこで、パスが正しいかどうかを確認しました。正しかったです。結果的にその道は間違っていなかったので、少し混乱しました。
コードを何度も見直して、ついに問題を発見しました。実際、このエラー メッセージのプロンプトはすでに非常に明白であり、そのようなファイルやディレクトリは存在しません。つまり、このエラーはパスが間違っていることが原因ではなく、ファイルまたはフォルダーが存在しないことが原因で発生します。
問題は、mkdir メソッドを使用してディレクトリを作成する前に、パス内に上位ディレクトリを作成しなかったことです。この場合、 fs.mkdir() メソッドはパス内の最終レベルのディレクトリのみを作成し、中間ディレクトリは作成しません。
たとえば、path/to/new/directory ディレクトリを作成する前に、まず path/to/ ディレクトリを作成する必要があります。そうしないと、ENOENT エラーが発生します。
この問題を解決するには、mkdir メソッドを使用する前に、fs.mkdirSync() メソッドを使用して中間ディレクトリを再帰的に作成するだけです。実装されたサンプル コードは次のとおりです。
const fs = require('fs'); const path = require('path'); function mkdirSyncR(targetDir) { const sep = path.sep; const initDir = path.isAbsolute(targetDir) ? sep : ''; targetDir.split(sep).reduce((parentDir, childDir) => { const curDir = path.resolve(parentDir, childDir); try { if (!fs.existsSync(curDir)) { fs.mkdirSync(curDir); } } catch (err) { if (err.code !== 'EEXIST') { throw err; } } return curDir; }, initDir); } const newDir = 'path/to/new/directory'; mkdirSyncR(path.dirname(newDir)); fs.mkdirSync(newDir);
このサンプル コードの mkdirSyncR() メソッドは、ディレクトリを再帰的に作成し、ディレクトリの作成時にディレクトリが存在するかどうかを判断できます。 mkdir() メソッドを使用してディレクトリを作成する前に、最初に最終レベルのディレクトリを除くパスの部分を使用して (つまり、 path.dirname() メソッドを呼び出して) 中間ディレクトリを作成します。
これで、新しいディレクトリをスムーズに作成できるようになりました。
概要
Node.js で mkdir メソッドを使用する場合、ディレクトリの中間ディレクトリが存在しない場合、ENOENT エラーが発生します。この問題を解決するには、まず fs.mkdirSync() メソッドを使用して中間ディレクトリを再帰的に作成し、次に fs.mkdir() メソッドを使用して新しいディレクトリを作成します。
以上がnodejs mkdir エラーレポートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。