개발 과정에서 Next.js 서버를 구동할 때 yarn과 npm을 사용하여 build와 install을 진행하면서 종속성 관련 오류가 발생했습니다.
종속성 관련해서 yarn 과 npm 을 혼합해서 사용하고 버전을 수시로 바꾸다 보니 생긴 문제 입니다.
간단한 오류 해결 과정에서 yarn 에 대한 build 과정까지 알게되어 해당 부분을 기록합니다.
목차
yarn 과 npm
- yarn 은 의존성 충돌을 잘 관리하며, 설치속도가 매우 빠른 것이 장점입니다. yarn.lock 파일을 통해 정확한 패키지 버전을 기록합니다.
- npm은 Node.js의 아주 오래된 기본 패키지 매니저로 많은 레퍼런스가 있고 제일 많이 사용되는 것 같습니다. package-lock.json 파일을 사용하여 설치된 패키지의 정확한 버전을 기록합니다.
yarn build & yarn install
- yarn install
- package.json 에 정의된 패키지를 설치하고, yarn.lock 파일에 기록된 버전의 패키지들이 node_modules 폴더에 설치됩니다.
yarn install
- yarn build
- 프로젝트 소스코드를 빌드하는데, 빌드과정은 코드압축->트리쉐이킹->번들링->빌드아티팩트 으로 이뤄집니다.
- 코드 압축: 코드 크기를 줄이기 위해 공백, 주석 등을 제거하고, 변수를 짧게 변경하여 성능을 최적화합니다.
- 트리 쉐이킹 (Tree Shaking): 불필요한 코드를 제거하여 최종 번들에서 제외하는 과정입니다. (코드 최적화의 핵심)
- 번들링 (Bundling): 여러 개의 소스 파일을 하나의 파일 또는 적은 수의 파일로 합칩니다.(브라우저에서 쉽게 실행될 수 있도록 만드는 과정)
- 빌드 아티팩트 (Build Artifacts): 배포 가능한 파일들을 통해서 서버에 배포/브라우저에서 실행할 준비가 된 최종 형태 입니다.
yarn build
- 프로젝트 소스코드를 빌드하는데, 빌드과정은 코드압축->트리쉐이킹->번들링->빌드아티팩트 으로 이뤄집니다.
문제 상황: Cannot start service 오류
Next.js 서버를 yarn dev
명령어로 실행할 때, 아래와 같은 오류가 발생했습니다
✘ [ERROR] Cannot start service: Host version "0.23.1" does not match binary version "0.20.2"
이 오류는 esbuild
패키지의 버전 불일치 문제를 암시합니다. 문제를 해결하기 위해 최신 버전의 esbuild
패키지를 설치했습니다
yarn add esbuild@latest
하지만, 패키지 버전 업데이트 후에도 문제가 해결되지 않았습니다. 그래서 패키지 관리 파일을 완전히 삭제하고 재설치를 시도했습니다.
재설치 및 패키지 관리 파일 초기화
yarn.lock
파일 및node_modules
삭제rm -rf node_modules rm yarn.lock
- 먼저,
yarn.lock
파일과node_modules
폴더를 삭제합니다. 아래 명령어를 통해 삭제할 수 있습니다 - 패키지 설치
만약yarn install
yarn install
이 바로 실행되지 않는다면, 빈yarn.lock
파일을 생성한 후 다시yarn install
을 수행합니다. 빈yarn.lock
파일을 생성하는 방법은 다음과 같습니다 touch yarn.lock yarn install
yarn.lock
파일과node_modules
폴더를 삭제한 후, 패키지 설치를 진행합니다
결론
이러한 절차를 통해 종속성 관련 오류를 해결할 수 있었습니다. yarn
과 npm
의 패키지 관리가 복잡할 수 있지만, 파일을 삭제하고 새로 설치하는 방법으로 문제를 효과적으로 해결할 수 있습니다. 각 패키지 매니저의 차이점을 이해하고 적절히 활용하는 것이 중요합니다.
'Develop' 카테고리의 다른 글
Nextjs<Image />에서 remotePatterns로 외부 이미지 사용하기 (0) | 2024.09.18 |
---|---|
코드블록 복사 버튼 만들기 highlight.js (티스토리 우클릭금지 유지가능함) (0) | 2024.09.16 |
Node.js에서 (punycode) DeprecationWarning 해결하기(node 버전 다운그레이드) (1) | 2024.09.15 |
NextJS에서 링크를 새탭으로 열기: 보안과 성능까지 생각하자 (1) | 2024.09.07 |
ollama llama3.1 설치하기 (0) | 2024.09.06 |