Study & Project ✏️/Bug & Report 🐞

[node-gyp rebuild]Error: node-gyp failed to rebuild 에러 분석 및 해결 방법 (feat. electron-forge)

JM 2023. 4. 26. 22:48
반응형

기존 프로젝트를 쳐내고 오랜만에 다시 electron을 건들던 중...

과거엔 electron-builder를 이용해서 패키징과 컴파일링을 진행했는데,

이번에 공식 홈페이지에 가보니 electron-forge가 메인 빌더라고 적혀있었다.

 

https://www.electronjs.org/docs/latest/tutorial/tutorial-packaging

 

Packaging Your Application | Electron

To distribute your app with Electron, you need to package it and create installers.

www.electronjs.org

Electron Forge가 대세!

그래서 electron-forge로 빌더 교체를 진행하고 여러 가지 컴파일링을 시도해 봤다.

 

그러나....

윈도우 -> 윈도우의 컴파일링은 잘 진행된 반면

윈도우 -> linux, arm64로의 컴파일링은 오류가 나왔다.

 

바로 여러분이 검색해서 들어오셨을 Error: node-gyp failed to rebuild 이 나와버렸다.

 

블러처리는 귀찮으므로 짱짱 그림판으로 수정

 


 

그러므로 해당 에러의 분석을 먼저 해봤다.

 

1. node-gyp라는 라이브러리에서 오류가 발생하며

2. Visual Studio 버전 체크가 일어나고 있다

 

라는 결론에 도달했기 때문에 우선 npm node-gyp에서 설명들을 들여다보자

https://www.npmjs.com/package/node-gyp?activeTab=readme 

 

node-gyp

Node.js native addon build tool. Latest version: 9.3.1, last published: 4 months ago. Start using node-gyp in your project by running `npm i node-gyp`. There are 1379 other projects in the npm registry using node-gyp.

www.npmjs.com

참고. node-gyp는 node.js로 쓰인 크로스플랫폼 컴파일링 라이브러리인데 당연하게도 크로스플랫폼을 지원하기 위해서는 네이티브 빌드를 위해서 MSbuild 같은 cpp빌더가 필요하다

 

node-gyp에서 말하는 필수 설치요소들은 다음과 같다.

1. Python

2. Visual Studio Community or Visual Studio Build Tools

 


 

(1) 파이썬은 설치 후 환경변수 설정 및 node-gyp setting이 필요하다.

- 파이썬 환경변수 설정하는 방법은 추후에 예정(알잘딱깔센으로 설치하길 바람)

나는 npm을 이용해서 node-gyp를 사용하기 때문에 아래 커맨드를 입력해 준다.

npm config set python /path/to/executable/python

뒤의 path는 자신의 컴퓨터에 맞는 path로 입력! (ex. C:\Python310)

 

(2) Visual Studio Community or Visual Studio Build Tools를 설치하기 전에 node_modules를 잠깐 보자

node-gyp를 보면 find-visualstudio.js가 있는데 해당 코드에서 Visual Studio와 Visual Studio Build Tools의 버전을 체킹 하는 걸 알 수 있다.

해당 코드를 보고 추측하건대 Visual Studio의 버전은 2017, 2019, 2022만 유효하지 않을까 라는 예상을 하며

다음의 프로세스를 진행해 준다.

 

2-1) Visual Studio Installer를 켠 후 수정을 눌러준다

 

2-2) 아래와 같은 문구를 보고 Visual Studio Installer에서 c++를 사용한 데스크톱 개발을 열심히 재설치하면 안 된다.

이거 하면 안됩니다!!!!!(기존에 되어 있으면 그냥 나둬도 된다는 말)

 

우리는 node-gyp를 이용해서 컴파일링 할 것이므로!!!!!!

Node.js개발에서 우측의 C++를 사용한 데스크톱 개발을 사용해야 한다

2-3) node-gyp이 Windows 10에서 ARM64를 컴파일링 하기 위해서는 Visual C++ compilers과 Visual C++ ATL for ARM64를 설치하라고 했으니 해당 기능을 체크해서 설치하면 된다.

node-gyp에서 설명하는 것
혹시 몰라서 이 녀석들도 설치해줬다

자. 이제 준비는 끝났다.

electron-forge의 cli를 이용해서 간단하게 컴파일링을 시도해 보자.

https://www.electronforge.io/cli

 

CLI - Electron Forge

Target architecture to make for. Defaults to the arch that you're running on (the "host" arch). Allowed values are: "ia32", "x64", "armv7l", "arm64", "universal", or "mips64el". Multiple values should be comma-separated.

www.electronforge.io

 

아래 그림에서 체크한 사항들을 잘 보고 CLI를 입력하면 된다.

현재 script 없이 진행하므로(나는 현재 platform=win32, arch=x64) 아래 명령어를 통해 Make를 진행해 준다.

npx electron-forge make

위에 체크했듯이 default값들이 있기 때문에 테스트용 Make는 괜찮다.

 

해당 명령어를 실행하면 현재 환경에 맞는 실행파일을 생성해 준다!!!

 

결과물은 exe파일로 잘 뽑혀서 나온다 ㅎㅎ

 


여기까지 따라오느라 고생 많았습니다~~

 

electron-forge를 사용하면서 확실히 문서화나 환경세팅이 electron-builder보다는 깔끔해진 걸 느꼈다.

 

하지만 크로스컴파일링에 이름에 맞게 OS -> 타 OS로의 컴파일링은 지원되지 않는다는 게 아쉬웠다 ㅠㅠ

 

다음 시간에는 WSL를 이용해서 Windows -> Linux 환경으로의 컴파일링을 진행해 보겠다.