nvm을 이용한 node.js의 버전 관리 방법
새 노트북에서 node 를 설치후 기존에 잘 돌아가던 프로젝트를 빌드 하거나 실행하면 다음과 같은 에러가 발생하였다.
D:\redmanager\views>npm run start
> tuto@0.1.0 start
> set PORT=1024 && react-scripts start
Starting the development server...
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:133:10)
at module.exports (D:\redmanager\views\node_modules\webpack\lib\util\createHash.js:90:53)
at NormalModule._initBuildHash (D:\redmanager\views\node_modules\webpack\lib\NormalModule.js:401:16)
at handleParseError (D:\redmanager\views\node_modules\webpack\lib\NormalModule.js:449:10)
at D:\redmanager\views\node_modules\webpack\lib\NormalModule.js:481:5
at D:\redmanager\views\node_modules\webpack\lib\NormalModule.js:342:12
at D:\redmanager\views\node_modules\loader-runner\lib\LoaderRunner.js:373:3
at iterateNormalLoaders (D:\redmanager\views\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
at iterateNormalLoaders (D:\redmanager\views\node_modules\loader-runner\lib\LoaderRunner.js:221:10)
at D:\redmanager\views\node_modules\loader-runner\lib\LoaderRunner.js:236:3
at runSyncOrAsync (D:\redmanager\views\node_modules\loader-runner\lib\LoaderRunner.js:130:11)
at iterateNormalLoaders (D:\redmanager\views\node_modules\loader-runner\lib\LoaderRunner.js:232:2)
at Array.<anonymous> (D:\redmanager\views\node_modules\loader-runner\lib\LoaderRunner.js:205:4)
at Storage.finished (D:\redmanager\views\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16)
at D:\redmanager\views\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
D:\redmanager\views\node_modules\react-scripts\scripts\start.js:19
throw err;
^
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:133:10)
at module.exports (D:\redmanager\views\node_modules\webpack\lib\util\createHash.js:90:53)
at NormalModule._initBuildHash (D:\redmanager\views\node_modules\webpack\lib\NormalModule.js:401:16)
at D:\redmanager\views\node_modules\webpack\lib\NormalModule.js:433:10
at D:\redmanager\views\node_modules\webpack\lib\NormalModule.js:308:13
at D:\redmanager\views\node_modules\loader-runner\lib\LoaderRunner.js:367:11
at D:\redmanager\views\node_modules\loader-runner\lib\LoaderRunner.js:233:18
at context.callback (D:\redmanager\views\node_modules\loader-runner\lib\LoaderRunner.js:111:13)
at D:\redmanager\views\node_modules\babel-loader\lib\index.js:51:103
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
Node.js v18.15.0
확인해 보니 최신버전의 node 가 설치 되어 발생하는 문제였다.
다시 삭제하고 재설치 해야 하나 싶었는데 nvm
으로 node의 버전을 손쉽게 관리 할 수 있었다.
협업을 할 때, 또는 다양한 프로젝트를 동시에 진행해야 할 때 다양한 라이브러리 / 프레임워크 / 개발툴의 버전 호환 문제를 겪을 수 있다.
그때마다 Node.js를 재설치 및 삭제하는 방법으로는 한계가 있고 불편할 뿐더러 시간도 아깝다.
이런 상황에서 Node.js 버전을 상황에 따라 변경해 가면서 사용하게끔 도와주는 것이 NVM이다.
NVM 은 Node Version Manager
의 약자로써 Node.js의 도구이며, 상황에 따라 버전을 변경해 가면서 사용할 수 있도록 도와준다.
터미널에서 명령어로 매우 간단하게 노드 버젼을 스위칭할 수 있다.
nvm-windows는 MIT 라이센스의 오픈 소스로 Go로 작성되었다.
아래 링크에서 nvm-setup.exe 5.22 MBNov 13, 2022 로 설치를 진행해 보았다.
https://github.com/coreybutler/nvm-windows/releases
nvm-windows는 Node.js v4+에서 지원되기 때문에 기본적인 Node.js는 설치가 되어 있어야 한다.
- 컴퓨터에 다양한 버전의 Node.js 를 설치할 수 있게 해준다.
- use 커맨드를 이용해 사용할 Node 버전으로 간단하게 스위칭할수 있게 해준다.
- 디폴트 버전을 설정하거나 / 설치한 버전들의 전체 리스트를 확인하거나 / 필요 없는 버전을 삭제하는 등등… 소위 버전 관리가 쉬워진다.
node -v # 노드 버전 확인
nvm list # 설치된 노드 버전 리스트 확인
nvm install lts # 최신 lts 버전 설치
nvm install 14.17.4 # 특정 버전 node 설치
nvm use 14.17.4 # 14.17.4 버전으로 스위칭
아래는 실제로 수행했던 cmd 창 갈무리.
D:\redmanager\views>nvm install 14.17.4
Downloading node.js version 14.17.4 (64-bit)...
Complete
Creating C:\Users\User\AppData\Roaming\nvm\temp
Downloading npm version 6.14.14... Complete
Installing npm v6.14.14...
Installation complete. If you want to use this version, type
nvm use 14.17.4
D:\redmanager\views>nvm list
* 18.15.0 (Currently using 64-bit executable)
14.17.4
D:\redmanager\views>nvm use 14.17.4
Now using node v14.17.4 (64-bit)
D:\redmanager\views>nvm list
18.15.0
* 14.17.4 (Currently using 64-bit executable)
더 자세한 내용은 git 링크에서 확인하십시오.