PC를 초기화 하고 블로그 프로젝트를 빌드 했더니 경고가 발생했습니다.
punycode 모듈이 더 이상 지원되지 않는다는 내용입니다.
(node:5649) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (Use `node --trace-deprecation ...` to show where the warning was created)
punycode는 유니코드 문자열을 ASCII 문자열로 변환하는 인코딩 모듈입니다.
주로 도메인 문자열을 처리할 때 사용하고, 일반적인 문자열 변환에도 활용할 수 있습니다.
예를 들어 한글 유니코드 문자열 도메인을 변환하면 아래와 같습니다.
퓨니코드.com —> xn—9i1bl3b186bf9e.com
참고로 국제화 도메인 이름(Internationalized Domain Name, IDN)은 ASCII 문자열만 지원합니다.
punycode 모듈은 Node.js v7.0.0 이후 사용되지 않으며, Node.js v21.0.0 부터 런타임 사용이 중단됐습니다.
1. 흐린 눈 시전 경고는 경고일 뿐 프로젝트 실행에 문제는 없습니다. 기능에 문제가 없다면 흐린 눈으로 모른체 넘어갑니다.
2. Node 버전 다운드레이드 최신 버전 설치로 발생한 문제이기 때문에, 런타임이 가능한 버전으로 다운그레이드 해서 해결이 가능합니다. 현재 Node의 LTS(Long Term Support) 버전은 v20.16.0입니다.
3. 문제 코드 개선 punycode를 사용하는 모듈을 찾아 봅니다. npm ls punycode 문제의 모듈을 발견 했다면 해당 모듈을 최신 버전으로 업데이트합니다. 활성화 된 대부분의 모듈은 최신 Node 버전 호환성 이슈가 해결 됐을 겁니다. 만약 해당 모듈의 업데이트 버전이 없다면, 해당 모듈을 제거하고 대체 모듈을 찾아야 합니다. 추가로 deprecated 기능을 어디서 사용하는지 추적할 수도 있습니다. 이 명령어는 모든 deprecated 기능을 트레이스에 출력합니다. node --trace-deprecation