JIGGAG

호이스팅

2019년 11월 22일

호이스팅

프로젝트 구조 (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

먼저 호출된 현재 프로젝트에서 해당 모듈을 찾는다. 없으면 형제 프로젝트로 올라가서 찾는다. 또 없으면 부모 프로젝트로 올라가서 찾는다. 개발중에는 정상적으로 작동한다. 그러나 해당 프로젝트만 분리하여 배포하는 경우 호이스팅되었던 프로젝트 모듈이 없어지므로 오류가 발생한다. 호이스팅이 변수, 함수에만 적용되는줄 알았는데 이런 모듈에도 적용이 되는 것을 직접 겪어보고 알게 되었다. (모듈이 함수지...)