주니어 개발자 1호

[ package-lock의 중요성 ]Build Fail in Nestjs 본문

Server 관련

[ package-lock의 중요성 ]Build Fail in Nestjs

No_1 2022. 6. 28. 09:14

🚨 06.21 커밋 이후, Backend가 실행되지 않음

⚠️ Fact

1️⃣ 기존에는, backend에 node_module이 설치되었으나 현재 main branch 기준으로 설치 X

2️⃣ 06.21 ( npm 변경점: throttler 설치, error global serivce 설정 )

📝 Test [ node_module - not found ]

1️⃣ npm 에서 "@nestjs/throttler": "^2.0.1", 제거 후 npm install - FAIL

2️⃣ node_module 찾지 못하는 이슈 ( #8857 ) → 해결✅ ( 정보 제공 @ Seir in twitter ) ****

image

📝 Test [ mongoose aggregate 매개 변수 ]

1️⃣ 이전에 작동이 되었던 mongoDB 쿼리, aggregate $match 인수 오류

2️⃣ schema 분석시 $nin: number[]가 들어올 수 있기에, 문제가 없다고 판단되나 빌딩오류 발생

image

 

 

🟩 해결

🤔 가정:

이때까지 돌아가던 코드가 되지 않는 다면 특정 모듈의 version up 문제로 추측

하지만 추가된 모듈은 @nestjs/throttler 밖에 없음. 삭제를 하고 npm i 를 다시 실행해도 같은 문제 발생

영향이 있을 부분은 dir/ package-lock.json 이라 가정 함.

1️⃣ git log에서 package-lock.json 복사, 붙여 넣기 - Success

원인

1️⃣ package-lock을 삭제하고 npm i 를 다시 하였기 때문에 발생

2️⃣ package-lock에 대한 이해도 부족

 

 

Package, package-lock 이란?

package.json 은 version-range에 의해 한 버젼이 아니라, 특정 범위의 값을 가지고 있는 넓은 의미의 명세서.

package.json 파일의 역할

  1. 애플리케이션이 필요로 하는 패키지 목록 나열
  2. 각 패키지는 시맨틱 버저닝 규칙으로 필요한 버전을 기술합니다.
  3. 다른 개발자와 같은 빌드환경을 구성할 수 있습니다. 의존성이 달라 발생하는 문제를 예방합니다.

Package.json 라벨링 규칙

package.json은 “시맨틱 버저닝 규칙”에 의해 패키지의 버전명을 숫자로 관리하는 방법이 사용 되고 있습니다.

[Major].[Minor].[Patch]-[label]
  • Major ( 메이저 ) - 이전 버전과 호환이 불가능 할 때 숫자를 하나씩 증가, 바뀐 버전을 사용하려 할 때 breaking change 목록을 확인하고, 이전 기능을 사용하는 코드를 수정 해야함
  • Minor ( 마이너 ) - 기능이 추가되는 경우 숫자를 증가, 기능이 추가 되었다고 이전 버전의 하위 호환성을 깨트리진 않습니다.
  • Patch ( 패치 ) - 버그 수정 패치를 적용할 때 사용합니다.
  • label ( 라벨 ) - 선택 사, pre, alpha, beta 와 같이 버전에 대한 부가 설명을 붙이고자 할 때 사용합니다.

시맨틱 버저닝을 사용할 때, 완전히 동일한 버전만 정의 X 아래와 같은 규칙으로 의존성이 깨지지 않는 다른 버전을 설치할 수 있습니다.

  • ver, =ver : 완전히 일치
  • ver : 큰 버전
  • =ver : 크거나 같은 버전
  • < ver : 작은 버전
  • < =ver : 작거나 같은 버전
  • ~ver : 버전 범위
    • ~1.0 , ~1.0x : 1.0이상 1.1 미만의 버전
  • ^ver : SemVer 규약을 따른다는 가정에서 동작하는 규칙
    • ^1.0.2 : 1.0.2이상 , 2.0 미만
    • ^1.0 : 1.0.0이상, 2.0 미만
    • ^1 : 1.0.0이상, 2.0 미만

참고

https://wikidocs.net/158476