Backend

[DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.

김콩콩쥐 2024. 2. 7. 23:21

오류 발생

package.json 에 dev 스크립트를 작성해서 npm run dev 를 작성했을 때

mongodb에 잘 연결은 됐지만

(node:17988) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)

이런 오류가 발생한다.

원인

Node.js의 최신 버전에서 punycode 모듈은 삭제되었다는 뜻으로 이 punycode 를 지원해주는 버전으로 다운그레이드 해야한다.

해결방법

난 노드 버전 중 가장 안정적이라고 하는 18버전으로 다운그레이드하기를 선택했다.

1. 설치된 Node.js 버전 확인

% node -v
// v21.5.0

2. nvm 설치

NVM(Node Version Manager) 은 Node.js의 버전을 관리해주는 도구이다.

https://github.com/nvm-sh/nvm

% brew install nvm
  • mac m1의 경우 zsh: command not found: nvm 가 발생할 수 있음
% vi ~/.zshrc

// 파일 진입 후 아래 내용 추가해주기

export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh"  # This loads nvm
[ -s "/usr/local/opt/nvm/etc/bash_completion" ] && . "/usr/local/opt/nvm/etc/bash_completion"  # This loads nvm bash_completion
source $(brew --prefix nvm)/nvm.sh

3. 설치 가능한 version list

% nvm ls-remote

4. 특정 버전 node.js 설치

% nvm install v{버전명}
% nvm install v18.19.0
Downloading and installing node v18.19.0...
Downloading https://nodejs.org/dist/v18.19.0/node-v18.19.0-darwin-arm64.tar.xz...
################################################################################################################################################################ 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v18.19.0 (npm v10.2.3)
Creating default alias: default -> v18.19.0

default 로 잡혔지만 한 번 더 체크 해주기

% nvm use 18.19.0
% nvm alias default 18.19.0

다시 npm run dev 실행하면 위의 오류가 사라진다.