VSCode 터미널 실행 안됨 - VSCode teomineol silhaeng andoem

갑자기 발생한 실행 에러

VSCode에서 즐겁게(?) 코딩을 하던 중 급작스럽게 발생한 에러를 대처하기 위해 고군분투한 과정을 공유해보려고 합니다.

pm2라는 NodeJS의 프로세스 매니저를 사용하던 중 아래와 같은 에러가 발생하면서 서버 테스트를 할 수 없었습니다.

VSCode 터미널 실행 안됨 - VSCode teomineol silhaeng andoem
VSCode에서 pm2 시작 시 발생하는 오류

이는 스크립트 권한이 제한되어있는 상태이기 때문에 pm2 명령어가 작동하지 않는다는 것으로써 권한을 변경하기 위해서는 PowerShell을 관리자 권한으로 실행하여 변경해주어야 합니다.

- Windows PowerShell을 관리자 권한으로 실행합니다.

VSCode 터미널 실행 안됨 - VSCode teomineol silhaeng andoem
Windows PowerShell 관리자 권한 실행 과정 화면

- get-help Set-ExecutionPolicy로 어떤 권한을 설정할 수 있는지 확인합니다.

VSCode 터미널 실행 안됨 - VSCode teomineol silhaeng andoem
get-help Set-ExecutionPolicy

* 정책 종류

정책명 설명
AllSigned 로컬 시스템에 작성된 스크립트를 포함하여 신뢰할 수 있는 게시자가 모든 스크립트 및 구성 파일을 서명하여야 합니다.
Bypass 아무것도 차단되지 않으며, 경고나 프롬프트도 표시되지 않습니다.
Default 기본 정책을 실행하며, 윈도우 클라이언트나 원격 서명된 윈도우 서버용으로 제한됩니다.
RemoteSigned 윈도우 서버 컴퓨터의 기본 정책으로 신뢰할 수 있는 게시자가 인터넷에서 다운로드한 구성파일과 모든 스크립트를 서명해야합니다.
Restricted 클라이언트 컴퓨터(일반 윈도우)에서 기본적으로 적용되는 정책입니다. 구성 파일이나 스크립트를 불러올 수 없습니다. 
Undefined 범위에 대대 설정된 정책이 없습니다. 그룹 정책에서 설정하지 않은 범위에서 할당된 실행 정책을 제거합니다. 모든 범위의 실행 정책이 정의되지 않을 경우, 유효한 실행 정책은 제한적입니다.
Unrestricted 파워쉘 6.0부터는 윈도우즈 이외 시스템의 기본 정책으로 변경이 불가능합니다. 모든 구성파일 및 스크립트를 실행하며, 서명되지 않은 스크립트를 인터넷에서 다운받을 경우, 실행 전 사용군한을 묻는 메세지가 표시됩니다.

- RemoteSigned로 정책을 변경합니다.

VSCode 터미널 실행 안됨 - VSCode teomineol silhaeng andoem
Set-ExecutionPolicy RemoteSigned

정책을 변경한 후 VSCode로 다시 돌아가서 pm2 명령어를 실행해보겠습니다.

VSCode 터미널 실행 안됨 - VSCode teomineol silhaeng andoem
정상적으로 작동하는 화면

마치며

이번 글에서는 정책을 변경하여 VSCode 내 터미널에서 문제없이 pm2 명령어를 실행하는 방법에 대해 알아보았습니다. 이 글이 pm2를 사용하다가 이와 같은 오류를 미연에 방지하는 데 조금이나마 도움이 되었으면 합니다. 

로메오의 블로그

Tools

[VSCode] VS Code Terminal에서 스크립트 실행이 안됨 - Windows

romeoh 2020. 1. 7. 09:46

Windows용 Visual Studio Code에서 특정 스크립트가 실행이 안되는 경우가 발생합니다.

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

Shell 종류를 선택합니다.

기본으로 powershell로 설정되어 있는데, windows 기본 Shell인 cmd나 git bash로 변경하시면 됩니다.

cmd가 목록에 없으면 Select Default Shell을 선택합니다.

VSCode 터미널 실행 안됨 - VSCode teomineol silhaeng andoem

Command Prompt를 선택하고 VSCode의 Terminal을 껐다 다시 켭니다.

(VSCode를 재시작하지 않아도 됩니다.)

이 포스트는 VSCode에서 Node.js 설치 후 npm, tsc 등 명령을 실행했을 경우 "'npm' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고..." 오류가 발생하는 현상에 대한 해결입니다.

아래 그림과 같이 기본적으로 Windows VSCode는 기본 터미널이 Windows powershell로 되어 있습니다.

VSCode 터미널 실행 안됨 - VSCode teomineol silhaeng andoem

옆에 [+] 버튼을 클릭해서 Command Prompt를 띄우셔서 작업하시면 됩니다.

VSCode 터미널 실행 안됨 - VSCode teomineol silhaeng andoem

VSCode의 기본 터미널의 종류를 변경하는 방법은 아래와 같습니다.

1. CTRL + SHIFT + P

위 단축키를 눌러 창을 띄운 다음 Terminal: 로 검색하여 "Terminal: Select Default Profile"을 선택합니다.

VSCode 터미널 실행 안됨 - VSCode teomineol silhaeng andoem

2. Command Prompt 선택

터미널 종류 중 Command Prompt를 선택합니다.

VSCode 터미널 실행 안됨 - VSCode teomineol silhaeng andoem

3. 새 터미널 실행

[터미널] > [새 터미널] 을 실행하면 Command Prompt 터미널이 실행됩니다.

VSCode 터미널 실행 안됨 - VSCode teomineol silhaeng andoem