npm install을 하면 package-lock.json을 참조해서 설치하고자 하는 패키지가 어떤 버전의 패키지에 의존성이 있는지 확인해서 함께 설치해줌
서버를 다시 풀받고 로컬에서 실행하니 켜지지 않았다.
히스토리 King이신 옆팀 백엔드 개발자분께 도움을 청했다.
package-lock.json이 문제였다.
그러면서 이런말씀을 하셨다.
package-lock.json은 백엔드에만 국한된 것이 아니라서, 준열님도 공부하면 좋을 것 같은데?
그럼 package-lock.json이 무엇일까
package-lock.json
package.json 파일에는 라이브러리들의 버전이 적혀있는데, package.json은 협업에 있어서 라이브러리 버전 관리의 제 역할을 완벽하게 수행하지 못한다.
예를 들면 package.json에 근거하여 node_modules가 생성될 때 이런 상황이 발생할 수 있다.
김코딩 : 아 왜 안되지??
박코딩 : 난 잘되는데??
몇시간뒤..
김코딩 : 너 typescript 버전 몇이야?? 난 4.16.2인데
박코딩 : 응? 난 4.16.1인데??
package-lock.json은 node_modules 트리 혹은 package.json이 수정될 때 자동으로 생성된다고 한다.
그리고 package-lock.json이 존재할 때에는, package.json을 사용하여 node_modules를 생성하지 않고, package-lock.json을 사용하여 node_modules를 생성한다.
그리고 package-lock.json에는 의존성 트리에 대한 모든 정보가 담겨 있다.
package-lock.json은 package.json이 챙기지 못하는 디테일을 챙겨주는 파일이다.
때문에 협업자들끼리 package-lock.json이 변경되면 사용하는 라이브러리의 버전이 어느새 변경될 수 있는 것이다.
나의 경우에는 package-lock.json이 main의 package-lock.json(동작하는 라이브러리의 버전들이 적힌 파일)과 상이하여 로컬에서 동작하지 않았던 것이다.
참고
https://velog.io/@songyouhyun/Package.json%EA%B3%BC-Package-lock.json%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://hyunjun19.github.io/2018/03/23/package-lock-why-need/
'개발 > 그 외' 카테고리의 다른 글
Rest 정리 (0) | 2023.11.23 |
---|---|
React와 Express로 Kakao Login OAuth 구현하기 (1) (0) | 2023.07.12 |
핵클 라이브러리 : A/B 테스트, 기능 플래그, 실시간 데이터 분석, 모니터링 (0) | 2022.04.01 |
react와 next.js를 비교하며 라이브러리와 프레임워크 차이 알아보기 (0) | 2022.01.25 |
WebPack 기본 정리 (0) | 2022.01.03 |