1. ホーム
  2. node.js

[解決済み] node.jsでpath.joinを使う必要があるのでしょうか?

2022-05-11 05:02:50

質問

誰もが知っているように、Windowsはバックスラッシュで、Unixはフォワードスラッシュでパスを作成します。 path.join() で常に正しいスラッシュが使われます。ですから、例えば Unix でのみ使われる 'a/b/c' と書く代わりに、次のようにします。 path.join('a','b','c') の代わりに

しかし、この違いにもかかわらず、パスを正規化せず(例えば path.join を使用)、単に a/b/c のようにパスを記述するだけで、node.js は Windows 上でスクリプトを実行するのに何の問題もないようです。

では path.join('a','b','c') の上に 'a/b/c' ? どちらもプラットフォームに関係なく動作するように見えますが...。

どのように解決するのですか?

Windows ファイルシステムでは、パス区切り文字としてフォワードまたはバックスラッシュのいずれかを使用しても問題はありません (これは DOS の時代からそうでした)。唯一の現実的な問題は、Windows コマンド ライン プロセッサ (より具体的には、Windows ネイティブ コマンド ライン ユーティリティ) が、フォワード スラッシュをパスのコンポーネントではなく、オプション指定子として解釈する傾向があることです。したがって、サブプロセスとして実行されるWindowsコマンドにパスを渡す必要がある場合、バックスラッシュ付きのパスが必要です。また、パスを返す Windows API 呼び出し (および Windows API を呼び出す高位言語のメソッド) はバックスラッシュを使用するので、サブプロセスにパスを渡していない場合でも、正規化する必要があります。