티스토리 뷰

반응형

윈도우 개발 환경에서 VSCode나 기타 IDE에서 Cordova, Ionic 등의 Node.js 패키지를 실행하려 할 때, UnauthorizedAccess 오류가 발생되는 현상에 대해 해결 방법을 알아보겠습니다.

 

우선 글쓴이가 만난 오류 상황입니다.

 

윈도우10에서 Node.js는 설치가 되어있었고, 명령 프롬프트에서 npm install -g cordova 명령어로 Cordova를 처음 설치하고 cordova create webapp 명령어로 앱 프로젝트를 생성 후 VSCode로 해당 프로젝트를 열었습니다.

 

그리고 안드로이드 플랫폼을 추가하기 위해 VSCode 터미널에서 명령어를 실행하니 아래와 같은 오류가 발생되었습니다.

> cordova platform add android
cordova : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Users\User\AppData\Roaming\npm\cordova.ps1 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조 
하십시오.
위치 줄:1 문자:1
+ cordova platform add android
+ ~~~~~~~
    + CategoryInfo          : 보안 오류: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

 

문제의 원인은, VSCode가 사용자 권한으로 실행되면서 덩달아 VSCode의 터미널의 권한이 사용자 수준으로 낮아진 상황이였습니다. (대부분 VSCode 등의 프로그램을 설치할 때 User only로 설치되는 경우 발생)

 

문제를 해결하기 위해 스크립트 실행 제한을 풀어줍니다.

 

Windows PowerShell(윈도우 파워셸)관리자 모드로 실행하고 아래 명령어로 제한을 확인해봅니다.

> Get-ExecutionPolicy
Restricted

 

Get-ExecutionPolicy 실행 후 Restricted가 출력된다면 스크립트 실행이 제한된 상태입니다. 이 제한을 풀어보겠습니다.

> Set-ExecutionPolicy RemoteSigned

실행 규칙 변경
실행 정책은 신뢰하지 않는 스크립트로부터 사용자를 보호합니다. 실행 정책을 변경하면 about_Execution_Policies 도움말
항목(https://go.microsoft.com/fwlink/?LinkID=135170)에 설명된 보안 위험에 노출될 수 있습니다. 실행 정책을
변경하시겠습니까?
[Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "N"): y

 

Set-ExecutionPolicy RemoteSigned를 실행하고 y를 입력하여 진행하고, 다시 제한을 확인해봅니다.

> Get-ExecutionPolicy
RemoteSigned

 

RemoteSigned로 정상적으로 반영되었습니다.

 

이제 다시 Cordova로 돌아와서 안드로이드 플랫폼을 추가해봅니다.

> cordova platform add android
Using cordova-fetch for cordova-android@^9.1.0
Adding android project...
Creating Cordova project for the Android platform:
        Path: platforms\android
        Package: io.cordova.hellocordova
        Name: HelloCordova
        Activity: MainActivity
        Android target: android-29
Subproject Path: CordovaLib
Subproject Path: app
Android project created with cordova-android@9.1.0

 

실행이 정상적으로 되었습니다.

반응형