IT

Windows 에서 NVM 설치하기(CMD, PowerShell의 차이점까지)

웨비연 2025. 8. 7. 12:30

NVM은 Node Version Manager의 약자로 Node.js 버전을 관리하게 해주는 프로그램이다. 쉽게 말하면, Node.js 버전들을 쉽게 설치하고, 바꿔쓸 수 있게 해주는 프로그램이다.

회사에서 여러 용도로 Node.js를 사용하고 있는데, Node.js는 버전 차이가 크고, 프로젝트마다 필요로 하는 버전이 달라 매번 관리하기가 번거로웠다. 개발환경 자체도 Windows, Linux 자주 바뀌는데다 고객이 구체적으로 요구하는 버전이 존재하니 각 OS에서 nvm을 설치하여 Node.js 버전을 관리해보려고 한다. 오늘은 그중 첫 번째, Windows 에서 설치하기와 설치 과정, 설치 후 실행 과정에서 발생할 수 있는 오류와 해결책을 다룬다.

 

Windows 에서 NVM 설치하기

https://github.com/coreybutler/nvm-windows/releases

 

Releases · coreybutler/nvm-windows

A node.js version management utility for Windows. Ironically written in Go. - coreybutler/nvm-windows

github.com

 

Windows에서는 사실 리눅스용 nvm이 돌아가지 않기 때문에, nvm-windows(비공식)을 사용해야 한다. 위 github 주소로 들어가면, nvm-setup.exe 파일이 있는데 해당 파일을 다운로드한다.

다운로드한 파일은 이렇게 생겼다.

 

순차적으로 하나씩 읽으며 설치를 진행해 준다.

 

데스크톱 알림 설정은 다 꺼도 괜찮다. 설치에 영향을 주지 않는다.

 

설치를 모두 마치면 설치 종료 후, PowerShell을 켜겠냐는 옵션이 뜬다. 설정하여 바로 PowerShell에 들어가 보자.

 

nvm 입력 시, nvm 버전(Running version)과 사용법(Usage)이 뜨는 것을 보았을 때 정상적으로 잘 설치된 것을 알 수 있다.

 

정상적으로 동작하는지 확인도 할 겸, 특정 Node 버전을 설정해 설치해 본다. 설치 커맨드는 다음과 같다.

nvm install 20.19.4   # 버전 설치

nvm use 20.19.4       # 버전 사용 선언

node -v               # 현재 버전 확인

버전까지 확인 완료되면, Node 정상 설치 확인 완료! 

 

 

yarn을 사용하는 사용자를 위한 추가 설명(Powershell과 CMD의 차이를 중점적으로)

npm은 Node 설치 시 자동으로 설치되지만, yarn은 그렇지 않으므로 수동 설치가 필요하다. 평소 Node package를 설치하듯이 npm install을 이용하면 설치할 수 있다.

npm install yarn          # 일반적인 설치, 현재 경로에 설치
npm install -g yarn       # 전역(global) 설치

 

문제는, yarn을 실행할 때 아래와 같은 오류가 발생할 수도 있다.

 

내용을 읽어보았을 때, 해당 오류는 권한 문제로 보여 PowerShell을 관리자 권한으로 실행하여 다시 시도해 보았으나,

같은 오류가 발생했다.

 

그래서 해결 방안을 찾기 위한 첫 번째 시도로, cmd(명령 프롬프트)로 실행했더니 바로 정상 동작하였다.

 

그렇다면 PowerShell에도 yarn이 정상적으로 설치되었으나 실행 과정에서 cmd와의 차이점이 존재해 발생했던 것. 그래서 yarn.cmd 를 실행시켜 본다. 역시 정상 동작하였다.

 

PowerShell 환경에서도 cmd파일을 실행했을 때는 정상적으로 동작한 것을 보아, CMD와 PowerShell 간의 실행 순서나 동작 차이로 인해 발생한 오류임을 알 수 있다.

물론, 바로 CMD를 사용하면 이러한 오류를 피할 수 있지만, Linux 환경에 익숙한 개발자들(나 포함)은 Windows에서도 PowerShell을 더 선호하는 경우가 많다. 그러니 CMD와 PowerShell의 차이점을 알아보고, PowerShell에서의 yarn 사용을 위한 해결책을 찾아본다.

 

CMD와 PowerShell의 차이점

  CMD(명령 프롬프트) PowerShell
기본 역할 간단한 명령어 실행기 강력한 스크립트 및 명령어 환경
명령어 찾는 순서 확장자에 관계 없이 .exe, .bat, .cmd를 먼저 탐색해서 실행 스크립트 실행 정책(ExecutionPolicy) 적용 후, .ps1(스크립트), .cmd, .exe 순서로 해석
파일 실행 정책 그냥 실행 (보안 정책 거의 없음) .ps1 스크립트 실행 시 정책 체크 (Restricted, RemoteSigned 등), .cmd/.exe는 별다른 제한 없음
입출력 데이터 문자열(Text) 기준 (파이프라인 넘길 때도 문자열만 전달) 객체 기반 파이프라인 (Object Pipe) 전달. 리눅스처럼 text pipe가 아님

 

즉, yarn 실행이 CMD에선 되고 PowerShell에선 안되었던 이유는 다음과 같다.

  • CMD의 경우 yarn 입력 시 PATH에서 yarn.cmd를 바로 실행한다.
  • PowerShell의 경우 yarn 입력 시 확장자 우선순위에 따라 yarn.ps1 스크립트를 먼저 실행하려 하며, 이때 실행 정책(ExecutionPolicy)에 의해 .ps1 파일 실행이 차단되어 UnauthorizedAccess 오류가 발생한다.

 

실행 정책(Execution Policy)

그럼 이제 실행 정책을 확인하고 수정해 보자. PowerShell에서 .ps1 파일 실행 권한을 부여하면 yarn도 정상적으로 사용할 수 있다. 

현재 적용되어 있는 실행 정책을 확인하는 커맨드는 다음과 같다. PowerShell을 관리자 권한으로 실행하여 입력해 본다.

Get-ExecutionPolicy

예상했던 대로, Restricted가 나왔다. Restricted 는 실행 정책 기본값으로 ‘스크립트 실행 불가’설정이다.

 

실행 정책 변경을 위한 커맨드 작성 방식은 다음과 같다. 

Set-ExecutionPolicy [실행정책]
Set-ExecutionPolicy RemoteSigned

Get을 Set으로만 바꾼 다음, 원하는 정책으로 설정해 준다. 나는 RemoteSigned로 설정한다. RemoteSigned 외에도 Unrestricted, Bypass 등으로 설정 가능하다. 각 실행 정책은 보안 수준이 다르니 필요에 따라 선택하면 된다.

  • Restricted: 스크립트 실행 불가(기본값)
  • RemoteSigned: 로컬 작성 스크립트 실행, 인터넷에서 받은 것은 서명 필요
  • Unrestricted: 모든 스크립트 실행, 인터넷 파일은 경고 표시
  • Bypass: 모든 제한 없이 실행

 

실행 정책을 변경하는 것은 보안에 민감한 문제이니 한 번 더 확인해 달라고 요청하는데 Y 입력해 주고 엔터. 그리고 다시 Get-ExecutionPolicy 해보면, 실행 정책이 잘 바뀐 것을 알 수 있다. 

 

마지막으로 이 과정의 목적인 yarn이 잘 되는지 확인해 보면, 이전과 달리 오류 문구 없이 잘 동작하는 것을 확인할 수 있다! 이제는 PowerShell에서도 yarn 이 정상 동작한다.

 

😎 아주 간단한 과정이지만 Unauthorized 문제는 원인을 빠르게 파악하기 어려워 공유해 본다. 앞으로 Node.js는 Node 외에도 다양한 목적으로 사용되고 있으니 이를 기반으로 버전 관리를 보다 용이하게 하고, CMD와 PowerShell의 차이점을 이해하여 Windows에서도 원활한 개발을 진행해 보자! 

 


참고

https://chaeyami.tistory.com/5

https://change-words.tistory.com/entry/windows-PowerShell-CMD