[解決済み】ノードのfs.mkdirSyncでフルパスを作成する方法は?
質問
フルパスが存在しない場合に、フルパスを作成しようとしています。
コードは以下のようになります。
var fs = require('fs');
if (!fs.existsSync(newDest)) fs.mkdirSync(newDest);
このコードは、サブディレクトリが1つだけ('dir1' のような newDest)であれば問題なく動作しますが、('dir1/dir2') のようなディレクトリパスがある場合は、次のように失敗します。 エラーです。ENOENT, no such file or directory
必要最小限のコード行数でフルパスを作成できるようにしたいのですが。
fsにrecursiveオプションがあるのを読んで、以下のように試してみました。
var fs = require('fs');
if (!fs.existsSync(newDest)) fs.mkdirSync(newDest,'0777', true);
存在しないディレクトリを再帰的に作成する、そんな簡単なことでいいような気がするのですが。それとも、パスを解析して各ディレクトリをチェックし、まだ存在しない場合は作成する必要があるのでしょうか?
私はNodeにかなり慣れていないんです。もしかしたら、私は古いバージョンのFSを使っているのかもしれませんね?
解決方法を教えてください。
一つの方法として shelljsモジュール
npm install shelljs
var shell = require('shelljs');
shell.mkdir('-p', fullPath);
そのページから
<ブロッククオート利用可能なオプション
p: フルパス (必要に応じて中間ディレクトリを作成します)
他の人が指摘しているように、もっと焦点を絞ったモジュールが他にあります。 しかし、mkdirp 以外にも、たくさんの便利なシェル操作 (which, grep など...) があり、Windows と *nix で動作します。
Edit: コメントによると、mkdir cliインスタンスを持っていないシステムでは動作しないようです。 そのようなことはありません。 シェルに似た関数のポータブルなクロスプラットフォームのセットを作成することです。 これはWindowsでも動作します。
関連
-
[解決済み] ノードマータ予期せぬフィールド
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsのnpmモジュールをアンインストールするにはどうすればよいですか?
-
[解決済み] Node.js の console.log() で '[Object]' ではなく、完全なオブジェクトを取得するにはどうすればよいですか?
-
[解決済み] Node.jsで現在のスクリプトのパスを取得するにはどうしたらいいですか?
-
[解決済み] Node.jsを使用してディレクトリが存在しない場合に作成する方法
-
[解決済み] Nodeでファイルに追記する方法は?
-
[解決済み] Node.jsでファイルをダウンロードする方法(サードパーティライブラリを使用しない)?
-
[解決済み] Node.jsのパスがファイルかディレクトリかをチェックする。
-
[解決済み】nodejsは絶対パスからファイル名を取得しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Google spreadsheet api Requestに不十分な認証スコープがあった。
-
[解決済み】ExpressJSとMeteorJSの比較【終了しました
-
[解決済み】モジュール '@babel/core' が見つかりません。
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み] MongoClient v3.0使用時、db.collectionが関数でない
-
[解決済み] Passport JSのreq.isAuthenticated()はどのように実装されていますか?[クローズド]
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
-
[解決済み] express は `body-parser deprecated undefined extended` としてエラーを投げます。
-
[解決済み] Express.js req.bodyが未定義です。