webpack에서 vite로 전환한 프로젝트를 젠킨스에서 빌드하는데 오류가 발생했다.
1. 오류 로그 확인
import { performance } from 'node:perf_hooks'
^
SyntaxError: Unexpected token {
at Module._compile (internal/modules/cjs/loader.js:723:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! xxx@0.1.0 build-dev: `NODE_ENV=DEV vite build --mode=development`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the xxx@0.1.0 build-dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /.npm/_logs/2024-05-27T01_41_23_127Z-debug.log
Build step 'Execute shell' marked build as failure
Finished: FAILURE
2. 노드 버전 확인
v10에 위치는 /usr/bin/node 확인
빌드 스크립트로 nvm도 불러봤지만 젠킨스 내에 nvm이 없다고 오류가 뜬다.
+ 추가로 인프라쪽에서는 node버전이 16과 18밖에 없다고 했지만 이상하게 젠킨스에서 바라보는 저 경로에 10이 있다.
그렇다고 저 경로의 노드 버전을 올리기엔 레거시 프로젝트들이 안돌아갈 위험이 있었다.
3. 플러그인 설치 (NodeJs)
노드 버전을 정의해서 사용할 수 있다는 플러그인이 있어 설치하려했다.
하지만 젠킨스 버전이 너무 낮아 설치 실패.
젠킨스 버전을 올리기엔 다른 프로젝트들에 영향이 가면 안되기 때문에 그대로 두고 다른 방법을 찾기로 했다.
4. 빌드 스크립트 수정
# nvm이 설치되어 있는지 확인
if ! command -v nvm &> /dev/null
then
echo "nvm이 설치되어 있지 않습니다. nvm을 설치합니다..."
# nvm 설치를 위한 스크립트 다운로드 및 실행
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
# nvm 스크립트를 활성화하여 사용 가능하도록 설정
source ~/.bashrc
else
echo "nvm이 이미 설치되어 있습니다."
fi
# 설치된 Node.js 버전을 사용하여 npm 명령어를 실행할 수 있도록 설정
nvm use v18.14.2
rm -rf ../xx/TT/*
cp -a ./* ../xx/TT/
node -v
which node
npm install
npm run build-dev
cp -a dist/* ../xx/xx/
cd ../xx/xx
tar cvf xx.tar ./*
다른 프로젝트들은 그대로 v10으로 빌드하게 두고 vite로 전환한 프로젝트만 v18로 빌드하도록 빌드 스크립트를 수정했다.
nvm은 어떤 환경에 영향을 받는건지 지우지 않아도 계속 날아가는 것 같다.
날아가지 않았으면 빌드 후 스크립트에 nvm 처리하는 명령어를 넣으려 했는데 그럴 필요는 없었다.
더 깔끔하게 안에 nvm을 설치해버리고 싶은데 최대한 다른 쪽에 영향이 가지 않게 해야해서 아쉽다.
'개발' 카테고리의 다른 글
[메일폼] mobile mail form font size 탐구 (0) | 2024.07.11 |
---|---|
PING TIMEOUT . (0) | 2024.04.22 |
[Live Chat] 온라인 채팅, 헬프 데스크 소프트웨어 적용 테스트 (0) | 2023.11.14 |