Native Module

Electron의 강점 중에 하나는 이미 수많은 사람들이 작성한 npm 모듈들을 사용할 수 있다는 점이다. 특히 메인 프로세스에서 유용하게 사용할 수 있는 npm 모듈들이 정말 많이 있는데, 다만 여기서 조금 유의해야 할 점이 있다. 공식문서의 Using Native Modules 부분을 살펴보자.

The native Node modules are supported by Electron, but since Electron is very likely to use a different V8 version from the Node binary installed in your system, you have to manually specify the location of Electron’s headers when building native modules.

Electron과 시스템에서 사용하는 V8버전이 달라서 오류가 발생할 수 있으니 Electron에서 사용하는 V8엔진에서 돌아갈 수 있게 네이티브 모듈을 설치할 때 수동으로 알려줘야 한다는 내용.

방법으로는 세가지를 소개 하고 있는데, npm을 활용한 방식이 제일 깔끔하고 쉬워보인다.

# Electron's version.
export npm_config_target=1.7.9
# The architecture of Electron, can be ia32 or x64.
export npm_config_arch=x64
export npm_config_target_arch=x64
# Download headers for Electron.
export npm_config_disturl=https://atom.io/download/electron
# Tell node-pre-gyp that we are building for Electron.
export npm_config_runtime=electron
# Tell node-pre-gyp to build module from source code.
export npm_config_build_from_source=true
# Install all dependencies, and store cache to ~/.electron-gyp.
npm install $1

이런식으로 shell script를 작성하고 이 스크립트로 모듈을 설치하면 된다. 내 경우에는 bcrypt를 설치하기 위해 이 파일을 electron-npm 으로 프로젝트 폴더에 저장한 후

./electron-npm bcrypt

이런 식으로 설치를 하니 오류 없이 잘 작동 하였다.