프로젝트를 진행하던 중, Github Action으로 테스트 빌드를 하는 과정에서 에러가 났다. pnpm build를 하는 과정에서 에러가 났고,
에러 로그는 이렇게 떴었다.
관련 로그를 찾아보니 Github Action 에서 러너로 VM을 제공하는데, 이때 VM에서 node.js와 패키지 매니저를 받아올때 생기는 에러로 추측됐다.
그래서 우선 node.js버전을 최신화 해보려다가, 바로 전에 node20 , node22 두 버전 모두 잘 돌아갔던걸 확인했기에 pnpm의존성 문제가 있나 확인해보았다.
pnpm package들의 버전과 현재 프로젝트의 node간의 문제는 없었고, 로컬에서는 멀쩡하게 빌드가 잘 되고 있었기에 대체 어디가 문제인가 해서 ci.yml파일에
# 캐시 삭제
- name: Clear PNPM cache
run: pnpm store prune
해당 코드를 추가해 줬다.
pnpm 저장소에서 사용되지 않는 패키지를 제거해서 디스크 공간을 절약해주고, 저장소를 깔끔하게 유지해주는 코드인데, 일단 위에서 먼저
# 노드 설치
- name: install node version ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
해당 코드를 실행시켜 주고 있었기에, 노드 버전에 안맞는 pnpm 패키지가 글로벌 스토어에 들어있었어서 에러가 생겼을거라 생각했기 때문이다.
실제로 store prune명령어를 사용해보니 파일들이 지워지고, 빌드가 정상적으로 동작했다.
처음에는 팀원분과 같이 생각한게, 어차피 빈 초기 VM 환경을 사용하면 cache: 'pnpm' 기능이 상관이 없는거 아닌가 했는데,
https://github.com/actions/setup-node/blob/main/docs/advanced-usage.md#caching-packages-data
를 확인해보니 글로벌 캐시로 저장이 되어서 각 액션별로 VM 환경이 초기화 되더라도 캐싱이 됐던 패키지 정보들을 가져오는 것 같다.
오늘도 문제 해결 성공 !.! :)
'웹' 카테고리의 다른 글
Indexed DB 란??? [Chrome Extension을 개발하며] (0) | 2025.01.09 |
---|---|
Enum을 사용하면 안되는 이유 (0) | 2024.09.02 |
Next js Lottie 사용할때 Document is not defined Build 에러 (0) | 2024.06.26 |
Mock Service Worker (0) | 2024.05.23 |
JS - 클로저 (Closure) (0) | 2024.04.24 |