231214 개발일지 TIL - DeprecationWarning: The `punycode` module is deprecated.

The Web On Everything·2023년 12월 14일
0

개발일지

목록 보기
218/269
dev@ui-MacBook project_v2_server % node app.js 
(node:7916) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)

문제 발생
express 서버에서 프로젝트 실행 중 경고메시지가 발생했다.

문제 원인
Node.js에서 punycode 모듈의 사용을 공식적으로 권장하지 않는다는 것을 알려주는 메시지이다.
(punycode 모듈은 URL에 사용되는 퓨니 코드 문자열을 ASCII 문자열로 인코딩하거나 ASCII 문자열을 퓨니 코드 문자열로 디코딩하는데 사용되는 모듈이다.)

[punycode 모듈이 공식적으로 지원되지 않는 이유]
Node.js 코어 모듈 내에서 사용되지 않기 때문이다.
Node.js에서 코어 API를 가능한 한 작게 유지하려고 노력하고 있는데 이는 코어 API를 작고 간결하게 유지함으로써, 유지 보수를 용이하게 하고, 버그를 최소화하는데 도움이 된다.
따라서, Node.js 코어에서 직접적으로 사용되지 않는 모듈은 대체로 제거되거나 사용이 권장되지 않는(deprecated) 상태가 된다. 이러한 모듈 중 하나가 바로 punycode 모듈이다.
하지만, punycode와 같은 기능이 필요한 경우에는 외부 라이브러리를 사용하는 것이 권장되고 있다. 이는 코드의 유연성을 높이고, 개발자가 필요에 따라 적절한 라이브러리를 선택할 수 있는 자유를 제공해준다.

해결 방법
이 경고 메시지를 해결하려면 외부 라이브러리를 사용하는 것으로 대체하기로 했다. punycode 대신에 사용할 수 있는 npm 패키지로 punycode.js가 있다.

npm install punycode

위의 명령어를 통해 punycode.js를 설치한 후, 코드에서 punycode 대신 punycode.js를 참조하도록 변경해준다.

느낀 점
punycode는 Node.js에 내장된 코어 모듈이었지만, 코어 API를 작고 간결하게 유지하기 위해 Node.js v7 이후로 deprecated(권장되지 않는) 상태가 되었다고 한다.
기능적으로 punycode와 punycode.js는 거의 동일하지만, punycode는 Node.js에 내장된 모듈이었고, punycode.js는 외부에서 제공되는 라이브러리라는 점에서 차이가 있다는 것을 알게 되었다.

profile
오늘은 무슨 오류를 만날까?! 널 만나러 가는 길~ LOL

0개의 댓글