윈도우 11에 Node.js 설치하는 방법 (nvm-windows 버전 관리·npm 오류 해결)

윈도우 11에 nvm-windows로 Node.js LTS를 설치하고, node·npm 설치 확인, 버전 변경, npm.ps1 실행 오류 해결, 깨끗하게 삭제하는 방법까지 정리합니다. nvm 없이 winget으로 N…

Windows 11Node.js 24 LTSx64약 19분

검증된 문서입니다

클라우드 서버를 생성하여 이 문서의 명령을 처음부터 끝까지 그대로 실행하고 확인한 문서입니다.

운영체제
Windows 11 Pro 25H2 (build 26200) · x64
설치 버전
nvm-windows 2.0.1, Node.js 24.21.0 LTS / 22.23.3, npm 11.19.0, winget Node.js 24.20.0
테스트 서버
Microsoft Azure · 2 vCPU / 4 GB RAM (Standard_B2als_v2, koreacentral)
마지막 확인
2026-10-12

윈도우 11에 nvm-windows로 Node.js LTS를 설치하고, node·npm 설치 확인, 버전 변경, npm.ps1 실행 오류 해결, 깨끗하게 삭제하는 방법까지 정리합니다. nvm 없이 winget으로 Node.js만 설치하는 방법도 함께 다룹니다.

1. 준비물

  • Windows 11 PC (x64)
  • 관리자 그룹에 속한 사용자 계정 — 설치 중 「사용자 계정 컨트롤」 확인 창에서 Yes를 한 번 누릅니다
  • 인터넷 연결

이 문서의 모든 과정은 Windows 11 Pro 25H2(빌드 26200, x64) 가상 머신(2 vCPU · 4GB 메모리)에서 확인했습니다. 관리자 그룹에 속한 일반 계정으로 로그인했고, PowerShell 스크립트 실행 정책은 Windows 11 기본값(Restricted)인 상태에서 진행했습니다.

2. 설치 방법 고르기

이 문서는 두 가지 방법을 다룹니다.

  • nvm-windows로 설치(권장): Node.js 여러 버전을 설치해 두고 명령 한 줄로 바꿔 쓸 수 있습니다. 프로젝트마다 요구하는 Node.js 버전이 다를 때 필요합니다. 3~9단계에서 다룹니다.
  • winget으로 Node.js만 설치: Node.js 한 버전만 쓰면 되는 경우에 간단합니다. 10단계에서 다룹니다.

두 방법을 한 PC에 함께 쓰면 어느 node가 실행되는지 헷갈리게 됩니다. 하나만 고르세요.

3. 설치 전 상태 확인

시작 메뉴에서 PowerShell을 검색해 엽니다. 관리자 권한으로 열 필요는 없습니다. Node.js가 설치되어 있지 않으면 아래처럼 node 명령을 찾을 수 없다는 오류가 표시됩니다.

node -v
node : The term 'node' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.

이미 버전이 표시된다면 Node.js가 설치되어 있는 것입니다. nvm-windows로 관리하려면 12단계의 삭제 방법이나 설정 › 앱 › 설치된 앱에서 기존 Node.js를 먼저 삭제하세요.

4. nvm-windows 내려받기

nvm-windows의 설치 파일은 GitHub 배포 페이지(github.com/nvm-windows/nvm/releases)에 있습니다. 예전 주소인 coreybutler/nvm-windows에서 이 주소로 옮겨졌습니다. 배포 페이지에서 nvm-2.0.1-x64-setup.exe를 내려받거나, PowerShell에서 아래 명령으로 다운로드 폴더에 저장합니다. curl.exe는 Windows 11에 기본으로 들어 있는 다운로드 도구이고, -L은 주소가 다른 곳으로 넘어가면 따라간다는 뜻, -o는 저장할 파일 이름입니다.

curl.exe -L -o "$env:USERPROFILE\Downloads\nvm-2.0.1-x64-setup.exe" https://github.com/nvm-windows/nvm/releases/download/v2.0.1/nvm-2.0.1-x64-setup.exe

내려받은 파일에 정상적인 전자 서명이 있는지 확인합니다. Status가 Valid이고 서명한 곳이 Author Software Inc.이면 정상입니다.

Get-AuthenticodeSignature "$env:USERPROFILE\Downloads\nvm-2.0.1-x64-setup.exe" | Format-List Status, SignerCertificate
Status            : Valid
SignerCertificate : [Subject]
                      CN=Author Software Inc., O=Author Software Inc., L=Austin, S=Texas, C=US

5. nvm-windows 설치

다운로드 폴더에서 nvm-2.0.1-x64-setup.exe를 더블클릭하거나, PowerShell에서 실행합니다.

& "$env:USERPROFILE\Downloads\nvm-2.0.1-x64-setup.exe"

라이선스 화면에서 I accept the agreement를 고르고 Next를 누릅니다.

NVM for Windows 2.0.1 설치 마법사의 라이선스 동의 화면
라이선스 동의 화면

Node.js 버전을 저장할 폴더입니다. 기본값은 사용자 폴더 안의 AppData\Local\Author Software\nvm\installs입니다. 그대로 두고 Next를 누릅니다.

Node.js 저장 위치를 고르는 화면
Node.js 저장 위치

동작 방식은 기본값인 Shim을 그대로 둡니다. Shim은 node·npm 명령을 nvm이 만든 연결 파일로 실행하는 방식이라 버전을 바꿀 때 관리자 권한이 필요 없습니다.

Shim과 Link 중 동작 방식을 고르는 화면
동작 방식(Shim 권장)

기본 설정 화면도 그대로 두고 Next를 누릅니다. 이 설정은 설치 후에도 nvm config 명령으로 바꿀 수 있습니다.

nvm 기본 설정 화면
기본 설정

개발 소식을 받을 이메일을 묻는 화면입니다. 선택 사항이므로 칸에 적힌 name@example.com을 지워 비워 두고 Next를 누릅니다.

이메일 입력 칸을 비운 화면
이메일은 비워 둡니다

설치할 내용을 확인하고 Install을 누릅니다. Announcements email: Not provided로 표시되면 이메일이 입력되지 않은 것입니다.

설치 준비 완료 화면
설치 준비 완료

설치 중에 nvm.exe의 사용자 계정 컨트롤 확인 창이 표시됩니다. 게시자가 Author Software Inc.인지 확인하고 Yes를 누릅니다. nvm을 Windows 이벤트 로그에 등록하는 단계에서 관리자 권한이 필요하기 때문입니다.

nvm.exe 사용자 계정 컨트롤 확인 창
사용자 계정 컨트롤 확인 창

완료 화면에서 Finish를 누릅니다.

NVM for Windows 설치 완료 화면
설치 완료

6. nvm 설치 확인

열려 있던 PowerShell 창을 닫고 새로 엽니다. 설치 전에 열어 둔 창은 바뀐 환경 변수(PATH)를 읽지 못해 nvm 명령을 찾지 못합니다. 새 창에서 버전을 확인합니다.

nvm version
v2.0.1

7. Node.js LTS 설치

LTS는 오래 지원되는 안정 버전입니다. 특별한 이유가 없으면 LTS를 설치합니다. lts라고 적으면 가장 최신 LTS 버전을 찾아 설치합니다.

nvm install lts
Now using Node.js v24.21.0 by default.
Installed 1 version: 24.21.0
Completed in 54s

처음 설치한 버전은 바로 기본 버전으로 지정됩니다. node, npm, npx가 실행되는지 확인합니다.

node -v
v24.21.0
npm -v
11.19.0
npx -v
11.19.0

어느 파일이 실행되는지도 확인할 수 있습니다. 세 명령 모두 nvm 폴더의 .exe 파일로 연결되어 있습니다.

Get-Command node, npm, npx | Format-Table Name, CommandType, Source -AutoSize
Name     CommandType Source
----     ----------- ------
node.exe Application C:\Users\devuser\AppData\Local\Author Software\nvm\.nodejs\node.exe
npm.exe  Application C:\Users\devuser\AppData\Local\Author Software\nvm\.nodejs\npm.exe
npx.exe  Application C:\Users\devuser\AppData\Local\Author Software\nvm\.nodejs\npx.exe

8. 다른 버전 설치와 전환

설치할 수 있는 버전을 확인합니다. 숫자는 확인할 메이저 버전이고, --limit=6은 최신 버전부터 6개만 보여 준다는 뜻입니다.

nvm list releases 24 22 --limit=6
  Version   Released
  -------   ----------
* v24.21.0  2026-09-07  installed, current default
  v24.20.0  2026-08-26
  v24.19.0  2026-08-03
  v24.18.1  2026-07-28  security release
  v24.18.0  2026-06-23
  v24.17.0  2026-06-17  security release

6 versions listed.

Node.js 22를 추가로 설치합니다. 메이저 버전만 적으면 그 버전의 최신 버전이 설치됩니다. 두 번째부터는 설치만 하고 기본 버전은 바뀌지 않습니다.

nvm install 22
Installed 1 version: 22.23.3
Completed in 32s

설치된 버전 목록을 확인합니다. *와 (default)가 붙은 것이 지금 쓰는 버전입니다.

nvm list
* 24.21.0  (default)
  22.23.3

nvm use로 버전을 바꿉니다. 관리자 권한은 필요 없습니다.

nvm use 22
Now using Node.js v22.23.3 by default.
node -v
v22.23.3

다시 LTS로 돌아갈 때는 lts라고 적습니다.

nvm use lts
Now using Node.js v24.21.0 by default.
node -v
v24.21.0

9. npm으로 첫 프로젝트 실행

설치가 제대로 되었는지 npm 패키지를 하나 설치해 실행해 봅니다. 사용자 폴더 아래에 hello-node 폴더를 만들고 들어갑니다. npm init -y는 질문 없이 기본값으로 package.json 파일을 만든다는 뜻입니다.

mkdir hello-node; cd hello-node
npm init -y

폴더 정보와 만들어진 package.json 내용이 표시됩니다. 이어서 날짜를 다루는 dayjs 패키지를 설치합니다.

npm install dayjs
added 1 package, and audited 2 packages in 2s

found 0 vulnerabilities

dayjs를 쓰는 index.js 파일을 만들고 실행합니다. Set-Content는 따옴표 안의 내용으로 파일을 만드는 명령이라 출력이 없습니다.

Set-Content index.js "const dayjs = require('dayjs'); console.log('Hello Node.js', process.version, dayjs().format('YYYY-MM-DD'));"
node index.js
Hello Node.js v24.21.0 2026-10-11

Node.js 버전과 오늘 날짜가 표시되면 Node.js와 npm이 모두 정상입니다.

10. (다른 방법) winget으로 Node.js만 설치

여러 버전이 필요 없다면 Windows 11에 들어 있는 패키지 관리자 winget으로 Node.js만 설치할 수 있습니다. 먼저 설치할 수 있는 Node.js 패키지를 검색합니다. winget을 처음 쓰면 Microsoft Store 소스의 약관 동의를 묻습니다. Y를 입력하고 Enter를 누릅니다.

winget search OpenJS.NodeJS
Do you agree to all the source agreements terms?
[Y] Yes  [N] No: y
Name          Id                Version  Source
------------------------------------------------
Node.js       OpenJS.NodeJS     26.8.1   winget
Node.js 22    OpenJS.NodeJS.22  22.23.2  winget
Node.js (LTS) OpenJS.NodeJS.LTS 24.20.0  winget

LTS 버전을 설치합니다. 설치 중에 Node.js의 사용자 계정 컨트롤 확인 창이 표시되면 Yes를 누릅니다. winget의 패키지는 nodejs.org의 최신 버전보다 조금 늦게 올라옵니다. 이 문서를 확인한 날에는 nodejs.org의 최신 LTS가 24.21.0, winget은 24.20.0이었습니다.

winget install OpenJS.NodeJS.LTS
Found Node.js (LTS) [OpenJS.NodeJS.LTS] Version 24.20.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://nodejs.org/dist/v24.20.0/node-v24.20.0-x64.msi
  ██████████████████████████████  31.6 MB / 31.6 MB
Successfully verified installer hash
Starting package install...
The installer will request to run as administrator. Expect a prompt.
Successfully installed

PowerShell 창을 닫고 새로 연 뒤 확인합니다. node는 실행되지만, Windows 11 기본 설정에서는 npm이 아래 오류로 실행되지 않습니다.

node -v
v24.20.0
npm -v
npm : File C:\Program Files\nodejs\npm.ps1 cannot be loaded because running scripts is disabled on this system. For
more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.

공식 설치 파일은 npm을 PowerShell 스크립트(npm.ps1)로 실행하는데, Windows 11의 PowerShell 스크립트 실행 정책 기본값이 Restricted(스크립트 실행 안 함)이기 때문입니다.

Get-ExecutionPolicy -List
        Scope ExecutionPolicy
        ----- ---------------
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine      Restricted

현재 사용자에게만 RemoteSigned 정책을 적용합니다. RemoteSigned는 이 PC에 있는 스크립트는 실행하고, 인터넷에서 내려받은 스크립트는 서명이 있을 때만 실행하는 정책입니다. -Scope CurrentUser로 적용하면 관리자 권한이 필요 없고 다른 사용자에게는 영향이 없습니다.

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Get-ExecutionPolicy -Scope CurrentUser
RemoteSigned
npm -v
11.19.0

11. 문제 해결

nvm : The term 'nvm' is not recognized as the name of a cmdlet, function, script file, or operable program.

nvm을 설치하기 전에 열어 둔 PowerShell 창에서 실행했다는 뜻입니다. 이 창은 설치 후 바뀐 환경 변수(PATH)를 읽지 못합니다. 창을 닫고 새로 열면 됩니다. 새 창에서도 같은 오류가 나면 설정 › 앱 › 설치된 앱에 NVM for Windows가 있는지 확인하세요.

npm : File C:\Program Files\nodejs\npm.ps1 cannot be loaded because running scripts is disabled on this system.

공식 설치 파일이나 winget으로 Node.js를 설치하고 PowerShell 스크립트 실행 정책이 Restricted일 때 나는 오류입니다. 10단계처럼 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned를 실행하거나, npm.cmd로 실행하세요. nvm-windows 2.0으로 설치한 경우에는 npm이 npm.exe로 실행되어 이 오류가 나지 않습니다.

Note: The 'available' argument is deprecated. Please use 'releases' instead.

nvm-windows 1.x에서 쓰던 nvm list available을 2.0에서 실행하면 목록과 함께 이 안내가 표시됩니다. 2.0에서는 nvm list releases를 쓰세요. nvm list releases 22처럼 메이저 버전을 적으면 그 버전만 표시됩니다.

node : The term 'node' is not recognized as the name of a cmdlet, function, script file, or operable program.

Node.js가 설치되지 않았거나, 설치 전에 열어 둔 창에서 실행했다는 뜻입니다. 새 PowerShell 창에서 다시 확인하세요. nvm을 쓰는 경우 nvm list로 설치된 버전이 있는지, (default)가 붙은 버전이 있는지 확인하세요.

Remove-Item : Cannot remove item C:\Users\…\AppData\Local\Author Software\nvm\.shim: Access to the path is denied.

nvm-windows 2.0은 .shim 폴더를 사용자가 바꿀 수 없도록 잠가 둡니다. 12단계처럼 관리자 권한 PowerShell에서 지워야 합니다.

12. 삭제하기

Node.js 버전 하나만 삭제

nvm으로 설치한 버전 중 하나만 지울 때는 nvm uninstall을 씁니다.

nvm uninstall 22
Uninstalled Node.js v22.23.3
nvm list
* 24.21.0  (default)

nvm-windows 삭제

설정 › 앱 › 설치된 앱(영어판: Settings › Apps › Installed apps)에서 nvm을 검색합니다. nvm으로 설치한 Node.js도 Node.js Krypton via nvm-windows처럼 목록에 함께 표시됩니다. NVM for Windows 오른쪽의 …를 누르고 Uninstall을 누릅니다.

설치된 앱 목록에서 nvm을 검색한 화면
설치된 앱에서 nvm 검색
Uninstall 확인 말풍선
Uninstall 확인

nvm이 관리하는 Node.js 버전도 모두 삭제된다는 안내가 표시됩니다. Yes를 누르고, 이어서 표시되는 「Are you sure you want to completely remove NVM for Windows and all of its components?」에서도 Yes를 누릅니다.

nvm이 관리하는 Node.js 버전도 삭제된다는 안내 창
Node.js 버전 삭제 안내
NVM for Windows 삭제 완료 안내와 빈 앱 목록
삭제 완료

남은 항목 정리

삭제 후에도 사용자 PATH 환경 변수에 nvm 경로 두 줄과 .shim 폴더가 남습니다. 새 PowerShell 창에서 확인합니다.

[Environment]::GetEnvironmentVariable("Path", "User") -split ";"
C:\Users\devuser\AppData\Local\Author Software\nvm
C:\Users\devuser\AppData\Local\Author Software\nvm\.nodejs
C:\Users\devuser\AppData\Local\Microsoft\WindowsApps

PATH에서 nvm 경로만 빼고 다시 저장합니다. 첫 줄은 Author Software\nvm이 들어간 줄을 제외한 목록을 만들고, 둘째 줄은 그 목록을 사용자 PATH로 저장합니다. npm이 내려받은 패키지를 보관하는 npm-cache 폴더도 함께 지웁니다.

$userPath = [Environment]::GetEnvironmentVariable("Path", "User") -split ";" | Where-Object { $_ -notlike "*Author Software\nvm*" }
[Environment]::SetEnvironmentVariable("Path", ($userPath -join ";"), "User")
Remove-Item "$env:LOCALAPPDATA\npm-cache" -Recurse -Force
[Environment]::GetEnvironmentVariable("Path", "User") -split ";"
C:\Users\devuser\AppData\Local\Microsoft\WindowsApps

남은 Author Software 폴더는 일반 PowerShell에서는 「Access to the path is denied」로 지워지지 않습니다. 관리자 권한 PowerShell을 열어 지웁니다. 아래 첫 줄을 실행하면 사용자 계정 컨트롤 확인 창이 표시되고, Yes를 누르면 관리자 PowerShell 창이 열립니다.

Start-Process powershell -Verb RunAs

새로 열린 관리자 PowerShell 창에서 실행합니다. False가 표시되면 모두 삭제된 것입니다.

Remove-Item "$env:LOCALAPPDATA\Author Software" -Recurse -Force
Test-Path "$env:LOCALAPPDATA\Author Software"
False

winget으로 설치한 Node.js 삭제

10단계에서 winget으로 설치했다면 아래 명령으로 삭제합니다. 사용자 계정 컨트롤 확인 창에서 Yes를 누릅니다. 설치 폴더가 남아 있지 않으면 False가 표시됩니다.

winget uninstall OpenJS.NodeJS.LTS
Found Node.js [OpenJS.NodeJS.LTS]
Starting package uninstall...
Successfully uninstalled
Test-Path "C:\Program Files\nodejs"
False