Node.js 16.x 버전 설치

1. 이슈 내용

Node.js에서 mongoose를 사용하여 간단한 API를 만드는 개인 프로젝트를 진행 중입니다. 로컬 환경에서 모든 기능 개발이 끝난 이후에는 Oracle Cloud의 인스턴스에 배포해 보았습니다. 아직 CI/CD 환경은 구축하지 않았기 때문에 git pull로 소스코드를 다운로드 받아 테스트를 진행하였습니다. 그런데, 서버 애플리케이션을 실행하자, 다음과 같은 오류 문구가 출력된 것을 확인하였습니다.

ReferenceError: TextEncoder is not defined Node.js with mongoose

오류가 발생한 원인은 mongooseTextEncoder라는 것이 없기 때문이라는 내용을 찾았고, mongoose 6.x 버전을 사용하기 위해서는 최소 Node.js의 12.x버전이 설치되어 있어야 한다는 글[1]을 발견하였습니다.

Actually mongoose 6 requires Node 12 or higher, so this is expected behavior. Mongoose 6 does not support Node 10.So updating Node version will fix the issue. It also fix the problem by downgrading mongoose version to 5.

위의 내용을 참고하여 다음과 같이 두 가지 해결 방법을 알 수 있었습니다.

  • nodejs를 12.x 이상으로 업데이트하거나,
  • mongoose를 5.x 버전으로 낮추어야 한다.

2. 해결 내용

인스턴스에 설치된 nodejs 버전을 확인해본 결과 10.x 버전으로 설치된 것을 확인하였습니다. 로컬 환경에서 개발할 때를 고려하여 mongoose 버전을 낮추기보다는 nodejs의 버전을 업그레이드하기로 하였고, 구글링한 자료[2]를 참고하여 nodejs 16.x 버전으로 재설치하였습니다. 먼저, apt를 최신 버전으로 업데이트 및 업그레이드 합니다.

$ sudo apt update
$ sudo apt upgrade

Ubuntu, Debian 및 파생 모듈에 대한 바이너리 패키지를 제공하는 NodeSource에서 설치 스크립트를 다운로드 받기 위해 curl을 설치합니다.

$ sudo apt install -y curl

curl이 설치되었다면 아래 명령어를 통해 설정 스크립트를 다운로드합니다.

$ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -

위의 스크립트가 다운로드되면, apt 소스에 추가되고, 해당 스크립트로 인해 apt가 업데이트 됩니다. 이어서 아래 명령어를 입력하여 nodejs 16.x 버전을 설치합니다.

$ sudo apt install -y nodejs

설치된 nodejs의 버전을 확인해보면 다음과 같이 16.14.2 버전(작성일자 기준)이 설치된 것을 확인할 수 있습니다.

$ node --version
v16.14.2

최신 버전의 nodejs가 설치된 후에 express 서버를 실행시켜보니 정상적으로 동작하는 것을 확인할 수 있었습니다.

3. 참고 자료

"" 개의 결과를 찾았습니다.

    ""에 대한 결과를 찾을 수 없습니다.