servidor node lado español descubriendo desarrollo javascript node.js npm electron

javascript - lado - node js pdf 2018



conflicto de la versión del módulo de nodo al instalar módulos para el electrón (3)

Estoy tratando de hacer una aplicación Electron ( https://electron.atom.io/ ) que lea datos de mi puerto serie. Soy nuevo en tecnologías web en general, conozco algunos javascript, pero soy un chico de C ++.

Así que saqué su quick-start de github, corrí

npm install && npm start

Con esto fácil de trabajar, traté de instalar y ejecutar serialport con

npm install serialport

Con eso instalado y funcionando bien con un archivo de prueba, traté de combinar los dos y poner require(''serialport'') en el archivo index.html. Con esto allí obtengo este error:

Uncaught Error: The module ''/home/user/Documents/Programing/Git/Arduino-mpu6050/electron-quick-start/node_modules/serialport/build/Release/serialport.node'' was compiled against a different Node.js version using NODE_MODULE_VERSION 51. This version of Node.js requires NODE_MODULE_VERSION 53. Please try re-compiling or re-installing the module (for instance, using `npm rebuild` or`npm install`). at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:173:20) at Object.Module._extensions..node (module.js:598:18) at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:173:20) at Module.load (module.js:488:32) at tryModuleLoad (module.js:447:12) at Function.Module._load (module.js:439:3) at Module.require (module.js:498:17) at require (internal/module.js:20:19) at bindings (/home/user/Documents/Programing/Git/Arduino-mpu6050/electron-quick-start/node_modules/bindings/bindings.js:76:44) at Object.<anonymous> (/home/user/Documents/Programing/Git/Arduino-mpu6050/electron-quick-start/node_modules/serialport/lib/bindings.js:3:35)

¿Alguna idea para solucionarlo? No estoy usando dos versiones diferentes de Node, ¿por qué recibo este error?

Información del sistema operativo:

Distributor ID: Ubuntu Description: Ubuntu 16.04.2 LTS Release: 16.04 Codename: xenial


electron-rebuild en postinstall .

Dependiendo de lo que esté haciendo, puede usar electron-rebuild para reconstruir el serialport a la versión de electron que ha instalado.

Para hacerlo:

npm install --save-dev electron-rebuild $(npm bin)/electron-rebuild # Mac and Linux. ./node_modules/.bin/electron-rebuild.cmd # Windows.

Debido a que me olvidaba de hacer esto después de hacer una instalación npm (y para ayudar a otras personas que descargaron el proyecto), agregué los siguientes dos scripts a package.json :

"scripts": { "start": "electron .", "postinstall": "electron-rebuild", "electron-rebuild": "electron-rebuild" },

El postinstall se ejecutará automáticamente después de realizar una npm install luego de que termine la instalación típica, verá un mensaje de registro de la consola con electron-rebuild y automáticamente reconstruirá el serialport , y cualquier otra biblioteca nativa que tenga, a la versión electron . Esto significa que ni siquiera deberías pensar en ejecutar electron-rebuild futuro. 👍

Para volver a ejecutar manualmente la reconstrucción de electron-rebuild simplemente ejecútelo con npm run electron-rebuild .

¡Easy-peezie, lemon-squeezie!


Crear archivo .npmrc con contenido:

runtime = electron target = 1.7.5 target_arch = x64 disturl = https://atom.io/download/atom-shell export npm_config_runtime=electron export npm_config_build_from_source=true

Abra otra terminal y ejecute npm install [yourpackage]

Tenga en cuenta que algunos paquetes nuevos se instalarán con la versión electrónica más alta (destino), así que ahórrese un poco de dolor de cabeza / dolor de espalda y actualice su target = con la versión actual indicada en la página npm o github.


Cuando se produce este tipo de desajuste de versión, puede elegir una distribución de electrones con la versión del nodo de destino o reconstruir el paquete npm. Dado que la distribución de Electron ha omitido el nodo v7.0.0 que está configurado con NODE_MODULE_VERSION 51 (y saltó a v7.4.0), tendrías que volver a serialport paquete serialport .

En el directorio de su aplicación (donde se encuentra package.json en),

1. Instalar electron-rebuild

npm install --save-dev electron-rebuild


2. Reconstruir

./node_modules/.bin/electron-rebuild



O, incluso una mejor opción : establecer variables de entorno desde el primer lugar.

# Electron''s version. export npm_config_target=1.6.1 # 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. HOME=~/.electron-gyp npm install

Eche un vistazo a la página de documentación de Electron para usar módulos de nodo nativos. https://electron.atom.io/docs/tutorial/using-native-node-modules/