개요
이번 글에서는 Node.js 기반 애플리케이션에서 이름이 같은 두 개의 모듈을 사용하는 방법에 대해 이야기해보려고 한다.
문제상황 예시
하나의 문제의 상황을 예시로 들자면 사진과 같이 게시글 Entity의 모듈명을 Post로 작성했고
이후에 Controller에서 해당 모듈을 사용하기 위해 Entity에서 Post 모듈을 임포트 했지만
nest.js에서 임포트 한 HTTP POST 메서드를 의미하는 Post 모듈과 이름이 중복되어
해당 코드에서의 Post는 어느 모듈에서의 Post를 의미하는지 명확히 구분할 수 없는 문제가 발생한다.
해결방법 - 1
첫 번째 해결 방법으로는 모듈을 Export 하는 클래스에서 모듈명을 수정해 주는 방법이 있다.
가장 빠른 방법이 될 수도 있지만 가장 오래 걸리는 방법이 될 수도 있다.
해당 모듈과 연관된 파일들이 적거나 없다면 빠르게 수정하면 되지만 이미 해당 모듈을 많이 끌어다 쓰며 작업이 많이 진행된 상태라면 하나하나 수정해 주는 작업이 매우 번거로울 것이다.
해결방법 - 2
두 번째 해결 방법은 모듈 import 시 해당 모듈에 별칭을 붙여 사용하는 것이다.
"모듈명 as 별칭" 형태로 모듈을 import 할 수 있으며 클래스 내부에서 해당 모듈을 사용할 때 별칭으로 지어준 이름을 사용할 수 있다.
모듈 이름 중복으로 번거로운 클래스에서 별칭 하나 붙여주고 바로 사용할 수 있지만 몇몇 클래스에서만 별칭을 붙인 모듈을 사용하면 다른 클래스에서 똑같은 모듈을 사용할 때 헷갈릴 수 있을 것이다.
참고
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
import - JavaScript | MDN
The static import declaration is used to import read-only live bindings which are exported by another module. The imported bindings are called live bindings because they are updated by the module that exported the binding, but cannot be re-assigned by the
developer.mozilla.org