호이스팅
프로젝트 구조 (PAR 프로젝트 내부에 BRO, ME 프로젝트가 존재)
PAR + BRO + node_modules
|
+ ME + node_modules
|
+ node_modules
현재 프로젝트(ME
)에서 import axios from 'axios'
를 사용했을 때, 이 axios
는 어디에 설치된 모듈을 가져오는 것일까?
1) 현재 프로젝트: ./node_modules
2) 형제 프로젝트: ../bro/node_modules
3) 부모 프로젝트: ../../par/node_modules
먼저 호출된 현재 프로젝트에서 해당 모듈을 찾는다. 없으면 형제 프로젝트로 올라가서 찾는다. 또 없으면 부모 프로젝트로 올라가서 찾는다.
개발중에는 정상적으로 작동한다. 그러나 해당 프로젝트만 분리하여 배포하는 경우 호이스팅되었던 프로젝트 모듈이 없어지므로 오류가 발생한다.
호이스팅
이 변수, 함수에만 적용되는줄 알았는데 이런 모듈에도 적용이 되는 것을 직접 겪어보고 알게 되었다. (모듈이 함수지...)