path 모듈은 운영체제별로 경로 구분자가 달라 생기는 문제를 쉽게 해결하기 위해 등장했다.
- window: C:\Users\ano 처럼
\
를 사용하여 폴더 구분- Posix(macOS, Linux): /Users/ano 처럼
/
를 사용해 구분
path 모듈을 내장 모듈이므로 별도 npm 설치 없이 불러올 수 있다.
const path = require('path')
파일에 __filename
, 과 __dirname
변수를 넣어두면 실행 시 현재 파일명과 파일 경로로 바뀐다.
실제로 사용하고 있는 코드에서 실행시켜보았다.
//file명을 포함한 절대 경로
console.log(__filename) //D:\yk\projects\API\src\controllers\notice.js
//file명을 제외한 절대 경로
console.log(__dirname) //D:\yk\projects\API\src\controllers\notice.js
path.join([...paths])에서 paths는 항상 string이어야 한다.
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// Returns: '/foo/bar/baz/asdf'
path.join('foo', {}, 'bar');
// Throws 'TypeError: Path must be a string. Received {}'
첫번째 예시는 하나하나 string들을 경로라고 생각해서 /
로 구분지어 새로운 경로를 만들어낸다. quux가 포함되지 않는 이유는 '...'
가 상위 폴더를 가리키기 때문이다.
path.join([...paths])에서 paths는 항상 string이어야 한다.
path.resolve('/foo/bar', './baz');
// Returns: '/foo/bar/baz'
path.resolve('/foo/bar', '/tmp/file/');
// Returns: '/tmp/file'
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// If the current working directory is /home/myself/node,
// this returns '/home/myself/node/wwwroot/static_files/gif/image.gif'
path.join과 path.resolve 차이점
/폴더명
을 만나면 절대 경로로 인식해서 그 경로를 바로 반환한다. (예시 2번)./폴더명
으로 확실하게 구분해줘야한다. (예시 1번)path.resolve는 오른쪽에서 왼쪽으로 경로를 읽고, 상대경로와 절대경로를 구분할 수 있다.
https://p-iknow.netlify.app/node-js/path-moudle/
https://programming119.tistory.com/106
https://nodejs.org/api/path.html#pathjoinpaths