내가 뭘 한거지?
새 버전의 개발을 위해 브랜치를 따고, 오랫만에 시동을 걸었다. 잘 돌아가는지 확인차 빌드를 해본 것이다. 그런데 이게 뭐람! 에러가 난다. 지난 버전 릴리즈까지 마친 코드인데, 빌드 에러가 난다고?
내가 뭘 한거지?
생각해보자!
지난 번 릴리즈 이후에 리팩토링 한답시고 이것 저것 손을 댄 것도 있고, 또 ...... 아! 테스트, 단위테스트 적용한다고 설정파일도 바꾸고 새로운 패키지도 설치하고 테스트코드도 조금 작성했었지. 아니 그런데 이게 빌드 에러가 날 일인가? 도대체 뭐가 잘못된거지? 분명 단위 테스트 실행(npm run test)했을 땐 아무런 에러가 안 났는데... 하긴 당시에 빌드는 안해봤지.
자자, 그러지말고 에러코드를 자세하게 읽어보도록 하자구
메시지는 "target is a string value; tsconfig JSON must be parsed with parseJsonSourceFileConfigContent"라고 시작한다. 우선 이 메시지를 누가 내뱉은 것인지 알아야겠다. npm run build 스크립트부터 뜯어 보도록 하자. build 스크립트는 다음과 같이 네 개의 동작으로 구성됐다. 그래서 이들을 하나씩 따로 실행해봤다. 그랬더니 tsoa가 내뱉은 에러라는 걸 알 수 있었다.
"build": "npm run lint && tsoa spec-and-routes && tsc -p tsconfig.build.json && tsc-alias"
바뀐 게 없는데
라고 입버릇처럼 되뇌이면서도 뭔가 석연치 않아 머리 한 쪽 끝이 쭈뼛거린다. 윈도우든 맥이든 아이폰이든지 할 것 없이 보안 업데이트나 새 버전이 나왔나 체크해보는 것이 루틴인데 오늘 아침엔 브랜치를 따고나서 npm 업데이트를 감행했던 것이다. 실은 build 스크립트 중 lint에서도 전에 본 적 없는 경고가 있었는데 무시했다. 하지만 이것이 에러의 예고였던 것이다. 그래 npm update를 하고 나서 typescript의 버전이 올라갔구나!
바뀐 게 없기는 오늘 아침에 npm update 했잖아!
TypeScript 다운그레이드
TSOA와 TypeScript 사이에 버저종속성과 관련한 이슈를 검색해보니 타입스크립트 5.5.2 버전으로 업데이트한 후에 이런 에러를 만났다는 글이 있었다. 해당 글에선 이전 사용하던 버전, 5.4.2로 원복해서 문제를 해결(?)했다고 한다. 현재 사용 중인 TSOA 버전은 6.2.1이고 현 시점의 최신 버전은 6.4.0인데 공식 문서에선 TypeScript 5.3.3을 지원한다고 한다. 최신 버전의 TSOA가 타입스크립트를 어느 버전까지 지원하는지는 일일이 테스트 해봐야 할 것 같다. 그래서 그냥 전에 잘 동작하던 5.4.2로 돌아가기로 했다.
npm install -D typescript@5.4.2
타입스크립트 버전을 5.4.2로 다운그레이드 후 빌드(문제가 됐던 tsoa 포함)하니 다음과 같이 정상적으로 실행됐다.
인프라 업그레이드는 신중하게
타입스크립트는 인프라에 해당한다. 프로젝트에서 사용하고 있는 대부분의 모듈들이 이를 의존하고 있다는 말이다. 새버전이 나오면 업데이트하는 것이 좋겠지만 업그레이드 이후 미칠 영향에 대해서 따져 본 후에 문제가 없다고 확신할 수 있을 때 실행하도록 하자. 문제가 발생한 경우 빠른 원복을 위해 업그레이드 실시 전에 스냅샷을 찍어두는 것도 좋은 방법이다.
'일하는 중에' 카테고리의 다른 글
TypeScript, Unit Test를 위한 환경 만들기 (5) | 2024.09.07 |
---|---|
TypeScript, Unit Test 중 코드 커버리지 실패 원인과 해결 (1) | 2024.09.04 |
TypeScript, Unit Test를 위한 폴더 구조와 설정 (0) | 2024.08.12 |
Apache Phoenix Query Server를 활용한 프론트엔드 개발환경 꾸미기 (7) | 2020.08.10 |
증강분석(augmented analytics)과 워크스페이스(workspaces) (0) | 2020.06.25 |