node-gyp 빌드 오류가 발생하는 경우

5

NPM Install 도중에 node-gyp 빌드 오류가 발생하는 경우

Node 기반의 프로그램을 작성하면서 필요한 패키지들을 설정하고 npm install 명령으로 설치를 하다보면 패키지 설정에 의해서 설치 후 빌드 작업이 진행되는 경우가 있다. 이런 경우에 빌드 환경이 제대로 구성되지 않아서 오류가 발생하는 경우가 있어서 정리해 본다.

Warning 이 문서에서 모든 환경을 다루는 것이 아니고 msbuild 처리 환경에 대해서만 검토한 내용이므로 다른 환경인 경우는 적용되지 않는다.

오류 상황

Node 기반에서 돌아가는 어플리케이션을 Github에서 다운로드 받아서 테스트를 위해서 npm install 명령을 했을 때 뜬금없이 msbuild 관련한 환경설정이 부족해서 오류가 발생했다.

  • Python 2.5 이상 3.0 이하 설치 해야 한다는 오류
  • 설치 했더니 .NET Framework 2.0 이상을 설치해야 한다는 오류
  • 설치 했더니 VCBuil.exe 가 존재하지 않으니 .NET Framework 2.0 SDK 나 Visual Studio 2005를 설치해야 한다는 오류
  • 기타 등등…

상기의 상태에서 더 이상 진행 불가!!! 물론 전부를 설치하면 되겠지만 그렇다고 쓰지도 않는 툴들을 설치하는 것은 문제가 있어 보인다.

오류 원인

오류의 원인은 간단하다. 해당 어플리케이션 패키지에 정의된 의존성 패키지들 중에 설치과정에서 빌드를 거쳐야 하는 것이 존재하며 Python 으로 구현된 것들과 VC 로 구현된 것을 MSBuild를 이용해서 처리하기 때문이다.

일반적으로 Node 기반의 개발에서는 VSCode 나 Atom 등의 도구와 NodeJS, Git 등의 툴들만 사용하기 때문에 관련된 다른 언어나 IDE 환경이 존재하지 않기 때문이다.

오류 해결 방법

가장 쉬운 방법은 모든 언어와 IDE 개발 환경을 맞춰주면 전혀 문제가 없겠지만, 쓰지도 않는 환경을 단지 설치 상의 빌드 때문에 설치하고 지우는 것도 웃기다.

역시 구글링을 하다보니 이런 문제로 시달리는(?) 사람들이 많은 것 같다. 대부분은 아래와 같이 권장하고 있다.

상황별 오류 대응 방법

Case 1: Python 설치 및 Visual Studio 2010 이하 환경

위에서 언급한 오류는 발생하지 않는다. 다만 다른 오류가 있다면 해결하면 되는 상황이다.

Case 2: Python 설치 및 Visual Studio 2012 이상 환경

Visual Studio 2010 부터 환경부분이 변경된 것이 있어서 Visual Studio 버전 관련 오류가 발생하므로 다음과 같이 버전을 변경해서 처리해 주어야 한다.

1
$ npm install <target_module> --msvs_version=2012

msvs_version 은 현재 설치되어 있는 버전을 지정하면 된다.

만일 전체적인 npm 에 설정을 적용해 놓고 싶은 경우는 아래의 명령을 이용하면 된다.

1
$ npm config set msvs_version 2013 --g

Case 3: Python 및 기타 VS 환경이 없는 경우

이런 상황을 위해서 필요한 툴들과 환경을 처리해 주는 패키지가 제공되고 있으므로 아래와 같이 처리하면 된다.

1
$ npm install -g windows-build-tools

Notes 단, 이 방법은 Powhershell 또는 cmd 를 관리자 모드로 실행해 주어야 한다.

위에 정리된 내용은 경험을 기준으로 작성한 것이므로 다른 상황이라면 관련된 정보를 더 찾아서 해결해야 한다.

Written by Morris (ccambo@gmail.com - MSFL)


공유하기