Ir para o conteúdo principal

Módulos Nativos do NodeJS

Módulos Node,js nativos são suportados pelo Electron, mas, como Electron tem uma interface binária de aplicação (ABI) diferente da interface do Node.js (devido a diferenças como o uso do BoringSSL do Chromium ao invés do OpenSSL), os módulos nativos que você usar precisam ser recompilados para Electron. Caso contrário, você receberá a seguinte classe de erro quando tentar executar o seu aplicativo:

Error: The module '/path/to/native/module.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION $XYZ. This version of Node.js requires
NODE_MODULE_VERSION $ABC. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).

Como instalar módulos nativos

Existem várias maneiras diferentes de instalar módulos nativos:

Instalando módulos e recopilando para Electron

Você pode instalar módulos igual em outros projetos em Node, e então recompilar os módulos para Electron com o pacote @electron/rebuild. Este módulo pode determinar automaticamente a versão do Electron e lidar com os passos manuais de baixar cabeçalhos e recompilar os módulos nativos para sua aplicação. Se você estiver usando o Electron Forge, esta ferramenta é usada automaticamente no modo de desenvolvimento e quando gera a distribuição.

Por exemplo, para instalar a ferramenta standalone @electron/rebuild e então reconstruir módulos com ela via linha de comando:

npm install --save-dev @electron/rebuild

# Every time you run "npm install", run this:
./node_modules/.bin/electron-rebuild

# If you have trouble on Windows, try:
.\node_modules\.bin\electron-rebuild.cmd

For more information on usage and integration with other tools such as Electron Packager, consult the project's README.

Usando npm

Definindo algumas variáveis de ambiente, você pode usar npm para instalar módulos diretamente.

Por exemplo, para instalar todas as dependências para Electron:

# Versão do Electron.
export npm_config_target=1.2.3
# The architecture of your machine
export npm_config_arch=x64
export npm_config_target_arch=x64
# Download headers for Electron.
export npm_config_disturl=https://electronjs.org/headers
# Diga ao node-pre-gyp que estamos copilando para o Electron.
export npm_config_runtime=electron
# Diga ao node-pre-gyp para copilar os módulos do código fonte.
export npm_config_build_from_source=true
# Instale todas as dependências e armazene cache para ~/.electron-gyp.
HOME=~/.electron-gyp npm install

Compilação Manual para o Electron

Se você é um desenvolvedor que desenvolve um módulo nativo e quer testá-lo contra o Electron, você pode querer recompilar o módulo do Electron manualmente. Você pode usar node-gyp diretamente para compilar para Electron:

cd /path-to-module/
HOME=~/.electron-gyp node-gyp rebuild --target=1.2.3 --arch=x64 --dist-url=https://electronjs.org/headers
  • HOME=~/.electron-gyp changes where to find development headers.
  • --target=1.2.3 is the version of Electron.
  • --dist-url=... specifies where to download the headers.
  • --arch=x64 says the module is built for a 64-bit system.

Manually building for a custom build of Electron

To compile native Node modules against a custom build of Electron that doesn't match a public release, instruct npm to use the version of Node you have bundled with your custom build.

npm rebuild --nodedir=/path/to/src/out/Default/gen/node_headers

Solução de Problemas

If you installed a native module and found it was not working, you need to check the following things:

  • When in doubt, run @electron/rebuild first.
  • Make sure the native module is compatible with the target platform and architecture for your Electron app.
  • Make sure win_delay_load_hook