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 등의 프로젝트 생성 명령어를 실행해 보십시오.