1. ホーム
  2. node.js

[解決済み] Node.jsのpath.normalizeとpath.resolveの違いについて

2023-04-18 06:15:06

質問

の違いは何ですか? path.normalize(your_path)path.resolve(your_path) ?

私は知っている path.resolve(...) が複数の引数を受け付けることは知っていますが、引数が1つの場合の動作は path.normalize() ?

EDITです。 もし、同じように動作することになっているのであれば、私はこのような path.normalize(...) 関数にパスを渡すことができるのに path.resolve(...) あるいは、ドキュメンテーションのためかもしれません。 例えば、彼らは path.resolve(...) :

... 結果のパスは正規化され、...

を公開することで path.normalize(...) を公開することで、"normalized"の意味を説明しやすくなるのでしょうか? わかりません。

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

path.normalize は、余分な . , .. などをパスで指定します。 path.resolve は、パスを絶対パスに解決します。例(現在の作業ディレクトリが /Users/mtilley/src/testing ):

> path.normalize('../../src/../src/node')
'../../src/node'
> path.resolve('../../src/../src/node')
'/Users/mtilley/src/node'

言い換えると path.normalize は "入力と同じ場所に行ける最短経路は何か" であるのに対して path.resolve は "この道を通ったら目的地はどこか".です。

ただし path.normalize() ずっと よりも文脈に依存しない path.resolve() . があった。 path.normalize() コンテキスト を適用していた場合 (つまり、現在の作業ディレクトリを考慮していた場合)、 上記の例の結果は次のようになります。 ../node という結果になったでしょう。 /Users/mtilley/src/testing から /Users/mtilley/src/node .

皮肉なことに、これは path.resolve() は絶対的な意味での相対パスを生成しますが (どこで実行しても同じ結果になります)、一方 path.normalize() は相対パスで絶対パスを生成します (絶対結果を計算したい相対パスで実行する必要があります)。