#mcp

[Node.js] Windows npm 실행 오류 해결: PowerShell 보안 정책(PSSecurityException) 설정 가이드

Windows 환경에서 npm 명령어를 실행할 때 발생하는 "이 시스템에서 스크립트를 실행할 수 없으므로..."(PSSecurityException) 오류를 해결합니다. PowerShell의 실행 정책(Execution Policy)을 이해하고, 보안을 유지하면서 npm을 사용할 수 있도록 RemoteSigned 정책을 적용하는 방법을 정리합니다.

1. 문제 현상 (Issue)

Node.js 설치 후 터미널(VS Code 또는 PowerShell)에서 npm 명령어를 실행하면 다음과 같은 빨간색 에러 메시지가 출력되며 실행이 차단됩니다.

에러 메시지

npm : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Program Files\nodejs\npm.ps1 파일을 로드할 수 없습니다.
위치 줄:1 문자:1
+ npm install
+ ~~~
    + CategoryInfo          : 보안 오류: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

2. 원인 분석 (Root Cause)

이것은 npm의 문제가 아니라 Windows PowerShell의 보안 정책 때문입니다.

  • Restricted (기본값): Windows 클라이언트 OS의 기본 정책으로, 모든 스크립트 파일(.ps1)의 실행을 차단합니다.
  • npm 명령어는 내부적으로 npm.ps1 스크립트를 실행하려다 이 정책에 막히게 됩니다.

3. 해결 방법 (Solution)

보안 정책을 변경하여 스크립트 실행을 허용해야 합니다. 보안과 편의성의 균형을 위해 RemoteSigned 정책을 현재 사용자(CurrentUser)에게만 적용하는 것을 권장합니다.

Step 1: 현재 정책 확인

PowerShell을 실행하고 아래 명령어를 입력합니다.

Get-ExecutionPolicy

결과가 Restricted로 나온다면 실행이 불가능한 상태입니다.

Step 2: 정책 변경 (권장 설정)

PowerShell을 관리자 권한으로 실행한 뒤, 아래 명령어를 입력합니다.

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
정책 설명:
  • RemoteSigned: 로컬에서 생성한 스크립트는 실행 허용, 인터넷에서 다운로드한 스크립트는 서명된 것만 허용 (가장 권장되는 설정).
  • -Scope CurrentUser: 시스템 전체가 아닌 현재 로그인한 사용자에게만 적용하여 보안 리스크 최소화.

변경 확인 메시지가 나오면 Y (예)를 입력하여 승인합니다.


4. 대안 및 팁 (Alternatives)

방법 A: 일회성 허용 (임시)

정책을 영구적으로 바꾸기 부담스럽다면, 현재 열려있는 창에서만 허용할 수 있습니다.

Set-ExecutionPolicy RemoteSigned -Scope Process

방법 B: Command Prompt (cmd) 사용

PowerShell이 아닌 일반 명령 프롬프트(cmd)Git Bash에서는 해당 보안 정책의 영향을 받지 않으므로, 별도 설정 없이 npm을 사용할 수 있습니다.


5. 검증 (Verification)

설정 후 다시 버전을 확인하거나 명령어를 실행하여 에러가 사라졌는지 확인합니다.

npm --version

Next Step:
이제 npm이 정상 작동하므로, npm install을 통해 필요한 패키지를 설치하거나 npx create-react-app 등의 프로젝트 생성 명령어를 실행해 보십시오.