Node.js에서 path.normalize와 path.resolve의 차이점


86

사이의 차이 (있는 경우) 무엇 path.normalize(your_path)path.resolve(your_path)?

나도 path.resolve(...)여러 인수를 사용할 수 있지만, 호출과 같은 하나의 인수를 사용하여 동작입니다 path.normalize()?

편집 : 그들이 같은 방식으로 행동해야한다면 path.normalize(...)단순히 경로를 전달할 수있을 때 기능 을 노출하는 목적을 이해하지 못합니다. path.resolve(...)또는 문서화 목적 일 수 있습니다. 예를 들어, 문서에서 path.resolve(...)다음 과 같이 말합니다 .

... 결과 경로가 정규화되고 ...

를 노출하면 path.normalize(...)"정규화"가 무엇을 의미하는지 쉽게 설명 할 수 있습니다. 몰라요.

답변:


183

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()생성하는 반면 (어디서나 실행할 수 있으며 동일한 결과를 생성 함 ) 상대 용어로 절대 경로를 생성하는 것입니다 (원하는 상대 경로에서 실행해야 함). 절대 결과를 계산하십시오).


좋은. 답변 해주셔서 감사합니다! 이것은 한동안 나를 괴롭 혔습니다. Node 문서는 일반적으로 꽤 훌륭하지만 이것에 대해 약간 의아해했습니다.
BMiner

14
또한 path.normalize는 정규화하려는 모든 경로를 처리 할 수 ​​있으며 경로의 문자열 조작 만 의미하는 반면 path.resolve는 파일 시스템과 현재 디렉터리를 사용하여 경로를 절대 경로로 확인합니다. 이것은 path.normalize가 tar 파일 내부의 경로, 원격 파일 시스템 또는 완전히 추상적 인 경로에서 사용될 수 있으므로 매우 다르게 작동합니다.
Nakedible

path.join과 어떻게 다릅니 까?
Vijey

2

문서에서 :

resolve를 생각하는 또 다른 방법은 셸에서 일련의 cd 명령을 사용하는 것입니다.

설명서에서 path.resolvepath.normalize 에 대한 링크 . 나는 대부분 대답에 링크를 제공하고 싶지 않지만 Node.js 문서는 매우 괜찮습니다.


그냥 path.resolve (...)에 경로를 전달할 수있을 때 normalize (...) 함수를 노출하는 목적을 이해하지 못하는 것 같습니다.
BMiner

6
정규화하는 경로는 실제로 파일 시스템에 존재하지 않을 수 있습니다. 예를 들어 만들려는 파일의 경로를 정규화하거나 상대 URL 경로를 정규화 할 수 있습니다.
lanzz

사실 나는 당신이 해결보다 정규화를 사용하는 이유를 모르겠습니다.
Pickels

1
normalize는 절대 경로에 대한 경로를 완료하지 않습니다. 따라서 다른 리소스에 상대적인 일부 리소스의 정상적인 경로를 가져 오는 데 사용할 수 있습니다. 예를 들어 HTML 내부에서 사용자가 선택한 파일을 참조하는 데 사용할 수 있습니다. 정규화 된 경로는 항상 단순 ../하므로 (추가 없음 ) 사용자가 특정 위치에서만 파일을 선택하고이 위치 외부의 개인 파일을 볼 기회가 없는지 쉽게 확인할 수 있습니다.
dronus 2014
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.