Skip to content

fix: Node.js 24.20.0 실행 호환성 보장 - #24

Merged
wapj merged 5 commits into
mainfrom
fix/node-24-20-compatibility
Aug 31, 2026
Merged

wapj merged 5 commits into
mainfrom
fix/node-24-20-compatibility

Conversation

@wapj

@wapj wapj commented Aug 31, 2026 •

Copy link
Copy Markdown
Owner

변경 내용

  • 루트에 Node.js 24.20.0 버전을 고정했습니다.
  • ESM/CommonJS 혼용, Yarn PnP 로더, TypeScript 빌드 설정을 수정하고 NestJS의 src/... import 표기를 보존했습니다.
  • SQLite와 파일 저장 경로는 테스트에서 격리하고, MongoDB 예제의 원래 연결 URL은 보존했습니다.
  • 게시글 저장과 MongoDB 작업의 비동기 완료를 보장하고 게시판 비밀번호 검증 누락을 수정했습니다.
  • 인증 예제에서 공개 사용자 생성 경로를 제거하고, DTO 화이트리스트·본인 소유권·세션 무효화·비밀번호 비노출을 E2E로 검증했습니다.
  • Windows 전용 환경 변수 스크립트를 cross-env 기반으로 변경하고 민감한 환경/토큰 로그를 제거했습니다.
  • Chapter 0, 2~13과 bookmark/nodejs20을 명시적 매니페스트로 관리하고 모든 잠금파일 패키지의 설치·빌드·타입 검사를 자동 검증합니다.
  • 실제 HTTP/TCP/WebSocket 준비 상태와 분리 프로세스 그룹 종료를 검증해, 실패·타임아웃·SIGTERM 뒤 자식 프로세스가 남지 않도록 했습니다.
  • Node.js SEA는 blob 생성, 바이너리 복사, postject 주입, 서명 및 실제 실행까지 검증합니다.

검증 환경

  • Node.js v24.20.0
  • npm 11.19.0
  • macOS arm64
  • MongoDB 연결 URL을 포함한 지정 소스 8개는 main과 동일하게 보존

검증 결과

  • clean install: 루트 + 하위 잠금파일 패키지 28개 통과
  • JavaScript 구문 검사: 98/98
  • 빌드: 12/12
  • TypeScript 타입 검사: appendix-typescript, bun-test 2/2
  • 루트 E2E: 16개 대상, 19/19 통과
  • Chapter 3: Node/Express 엔트리포인트 10종 실제 HTTP 흐름 통과
  • Chapter 9: 기존 Jest E2E와 config/weather 실제 서버 흐름 통과
  • 인증 E2E: 입력 필터링, 익명/타 계정 차단, 본인 조회·수정·삭제, 삭제 세션 무효화 통과
  • WebSocket E2E: 무응답 타임아웃, ws echo, Socket.IO 브로드캐스트와 namespace/room 통과
  • Node 기능 예제: env-file, permission model, recursive readdir, SEA, test runner, V8, ESM loader 통과
  • 프로세스 정리 회귀 테스트: 3/3 및 실제 SIGTERM 후 잔류 포트·프로세스 없음
  • npm audit --audit-level=high: 취약점 0개
  • 별도 적대적 에이전트 및 Claude 리뷰의 비-Mongo 지적 반영 완료

재현 방법

npm ci
npm run install:e2e
npm run verify:node24
npm run test:e2e
npm audit --audit-level=high

특정 장만 확인할 때는 npm run test:e2e -- chapter7처럼 실행할 수 있습니다.

What:
- Node.js 24.20.0 버전을 고정하고 ESM, Yarn PnP, TypeScript 빌드 문제를 수정했습니다.
- MongoDB, SQLite, 파일 저장소를 테스트 환경에서 격리하고 비동기 저장 완료를 보장했습니다.
- 인증 비밀번호 변경과 게시판 비밀번호 검증을 실제 E2E 흐름에 맞게 수정했습니다.

Why:
- 전체 예제를 Node.js 24.20.0에서 설치, 빌드, 실행하고 HTTP, DB, 파일 업로드, WebSocket까지 재현 가능하게 검증하기 위해서입니다.

AI-Use: yes
AI-Model: Codex GPT-5
AI-Contribution: 100%
@wapj wapj self-assigned this Aug 31, 2026
What:
- chapter10/11의 src 절대 import를 복원하고 Jest E2E 경로 매핑을 추가했습니다.
- MongoDB 예제의 환경 변수 우선 처리를 제거하고 원래 연결 URL을 복원했습니다.

Why:
- 예제 코드의 의도를 유지하면서 Node.js 24 빌드 및 E2E 실행 호환성을 보장하기 위해서입니다.

AI-Use: yes
AI-Model: Codex GPT-5
AI-Contribution: 100%
@wapj

wapj commented Aug 31, 2026

Copy link
Copy Markdown
Owner Author

피드백 반영 완료했습니다. (08722e2)

  • chapter10/11의 src/... import를 원복하고 Jest E2E에만 경로 매핑을 추가했습니다.
  • MongoDB 연결 URL을 수정했던 8개 파일을 main과 동일하게 원복했습니다.
  • Node.js 24.20.0에서 두 Nest 앱의 build/E2E와 dist import 실행을 확인했습니다.
  • 원격 MongoDB에는 접속하지 않고 격리된 MongoDB 7에서 드라이버 CRUD, Mongoose HTTP CRUD, 게시판 연결, NestJS 블로그 HTTP CRUD를 재검증했습니다.

wapj added 2 commits August 31, 2026 11:41
What:
- Chapter 0과 2~13의 프로세스, HTTP, MongoDB, 인증, 업로드, WebSocket 흐름을 검증하는 루트 E2E 러너를 추가함
- 원격 MongoDB URL을 보존하면서 테스트에서만 로컬 컨테이너로 우회하고 보드 서버의 DB 초기화 레이스를 수정함
- 재현 가능한 의존성 설치 스크립트와 GitHub Actions 워크플로를 추가함

Why:
- Node.js 24.20.0에서 각 장의 실제 실행 경계를 반복 검증하고 외부 서비스 의존 없이 회귀를 탐지하기 위함

AI-Use: yes
AI-Model: Codex GPT-5
AI-Contribution: 90%
@wapj

wapj commented Aug 31, 2026 •

Copy link
Copy Markdown
Owner Author

비-Mongo 리뷰 지적을 6b32fd8에 반영했습니다.

  • Chapter 10/11: 공개 사용자 생성 경로 제거, DTO 화이트리스트, 인증·본인 소유권 검사, 비밀번호 비노출, 삭제된 세션 무효화
  • E2E 런너: 실제 서버 준비 상태 확인, 분리 프로세스 그룹 추적, SIGTERM/SIGKILL 정리, 충분한 전역 제한 시간
  • 검증 범위: 모든 잠금파일 패키지 동적 설치, 98개 JS 구문 검사, 12개 빌드, 2개 타입 검사, Chapter별 명시적 E2E 매니페스트
  • 추가 실행 경계: Chapter 3 전체 엔트리포인트, Chapter 9 기존 Jest E2E, 무응답 WebSocket, bookmark CRUD, Node.js 24 SEA 실제 바이너리 실행
  • 최종 로컬 결과: E2E 19/19, 프로세스 정리 회귀 3/3, high audit 취약점 0개, SIGTERM 후 잔류 프로세스·포트 없음
  • 후속 da721c8: GitHub Actions 자체 런타임도 Node 24인 checkout/setup-node v7으로 갱신했고 CI 전체 통과

요청하신 MongoDB URL 소스 8개는 main과 동일하게 보존했습니다. Chapter 6 Mongo E2E를 포함한 MongoDB 관련 코드는 이번 비-Mongo 후속 수정의 기준 커밋 d822d15 이후 변경하지 않았고, MongoDB 관련 추가 리뷰 지적도 이번 커밋 범위에서 제외했습니다. 별도 적대적 에이전트와 Claude가 제기한 비-Mongo 지적은 모두 반영했습니다.

@wapj
wapj merged commit 3dd9e2d into main Aug 31, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant