[문제 상황]
[현상 분석]
//package.json
"next": "^12.0.4",
//package-lock.json
"@next/...": {
"version": "12.3.4"
}
분명, nextjs의 버전이 12.0.4인데 왜 package-lock의 버전이 다른지 알아보다가 semver 규칙을 알게되었다.
“예를 들어, 위 예제와 같이 react
패키지가 "react": "^16.8.2"
이라고 등록되어 있으면, SemVer 규칙에 따라 16.8.2
이상 17.0.0
미만의 범위로 버전이 지정됩니다.”
그렇다! semver 규칙에 따라 그 범위의 가장 최선의 버전이 지정된다. 해당 범위 중 next js의 최선 버전이 적용되어서 발생하는 문제였다.
[문제 해결]
//package.json
"next": "12.0.4",
//package-lock.json
"@next/...": {
"version": "12.0.4"
}
⇒ 이렇게 package의 version을 특정 version으로 명시해 사용했더니 빌드 이슈는 사라졌다.
lock 파일에 대해 조심해서 사용하자!!
[참고]