Node.js를 설치하고 터미널에서 npm을 쳤더니 빨간 글씨로 "npm.ps1 파일을 로드할 수 없습니다"라는 메시지가 나오는 경우가 있습니다. 같은 컴퓨터에서 명령 프롬프트(cmd)로는 잘 되는데 PowerShell에서만 막힌다면 설치가 잘못된 것이 아니라 PowerShell의 실행 정책 때문일 가능성이 큽니다. Microsoft Learn의 실행 정책 문서를 바탕으로 원인과 해결 순서를 정리합니다.
npm.ps1 오류가 PowerShell에서만 나는 이유
Microsoft Learn 문서에 따르면 PowerShell 실행 정책은 스크립트를 어떤 조건에서 실행할지 정하는 안전 장치입니다. 모든 범위에서 정책이 정의되지 않으면 Windows 클라이언트의 실제 정책은 Restricted이고, Restricted는 개별 명령은 허용하지만 스크립트 파일(.ps1)은 실행하지 못하게 막습니다. Node.js를 설치하면 npm을 실행하는 .ps1 파일도 함께 들어 있어서, PowerShell에서 npm을 입력하면 이 정책에 걸릴 수 있습니다.
이 제한은 PowerShell에만 적용되는 정책이므로 명령 프롬프트에서는 같은 npm이 그대로 실행됩니다. 오류 문구가 영어로 나오든 한국어로 나오든 핵심은 "이 시스템에서 스크립트 실행이 비활성화되어 있다"는 내용입니다. 설치를 다시 하거나 Node.js를 지웠다 깔 필요는 없습니다.
실행 정책 확인하고 현재 사용자만 바꾸는 방법
먼저 PowerShell에서 아래 명령으로 범위별 정책을 확인합니다. 어느 범위에서 막고 있는지 알 수 있습니다.
Get-ExecutionPolicy -List
MachinePolicy나 UserPolicy에 값이 있으면 그룹 정책이 정한 것이어서 PowerShell에서 바꿀 수 없다고 문서에 적혀 있습니다. 회사 PC라면 관리자에게 문의하세요. 그렇지 않다면 현재 사용자 범위만 RemoteSigned로 바꾸는 것이 문서가 안내하는 방식 중 하나입니다.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
RemoteSigned는 내 컴퓨터에서 만든 스크립트는 허용하고, 인터넷에서 받은 서명 없는 스크립트는 막습니다. CurrentUser 범위는 현재 사용자에게만 적용되며 LocalMachine 범위와 달리 관리자 권한으로 실행하라는 별도 안내가 문서에 없습니다. 변경은 바로 적용되고 PowerShell을 다시 시작할 필요가 없다고 합니다.
정책을 바꾸고 싶지 않을 때 쓸 수 있는 방법
정책을 건드리지 않으려면 명령 프롬프트(cmd)에서 npm을 실행하면 됩니다. 정책 변경이 부담스러운 공용 PC에서는 이 방법이 가장 간단합니다. 문서에는 Bypass 정책도 소개돼 있지만 아무것도 차단하지 않고 경고도 없는 설정이라, 일반 사용자가 쓸 이유는 없습니다.
바꾼 뒤에도 안 된다면 Get-ExecutionPolicy -List로 더 높은 우선순위의 범위(Process, 그룹 정책)가 값을 덮고 있는지 확인하세요. 문서도 정책 변경 명령이 성공해도 다른 범위에 가려 실제 정책이 바뀌지 않을 수 있다고 설명합니다.

