web-dev-qa-db-fra.com

noeud de version de module conflit lors de l'installation de modules pour electron

J'essaie de créer une application Electron ( https://electron.atom.io/ ) qui lit les données de mon port série. Je suis nouveau dans les technologies Web en général, je connais un peu de javascript, mais je suis un gars c ++.

Alors j'ai tiré dans leur quick-start de github, a couru

npm install && npm start

Avec cela fonctionne facilement, j'ai essayé d'installer et d'exécuter serialport avec

npm install serialport

Avec cela installé et fonctionnant correctement avec un fichier de test, j'ai essayé de combiner les deux et mettre require('serialport') dans le fichier index.html. Avec cela, je reçois cette erreur:

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)

Des idées comment résoudre ce problème? Je n'utilise pas deux versions différentes de Node, pourquoi cette erreur me concerne-t-elle.

Informations sur le système d'exploitation:

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

Lorsque ce type de non concordance de version se produit, vous pouvez choisir une distribution électronique avec la cible Node version ou reconstruire le paquet npm. Depuis la distribution d'Electron a sauté Node La v7.0.0, configurée avec NODE_MODULE_VERSION 51 (et passée à la v7.4.0), vous devrez reconstruire le package serialport.

Dans le répertoire de votre application (où se trouve package.json),

1. Installer electron-rebuild

npm install --save-dev electron-rebuild


2. Reconstruire

./node_modules/.bin/electron-rebuild



Ou, même une meilleure option - définissez les variables d'environnement à partir du début.

# 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

Jetez un coup d’œil à la page de documentation d’Electron pour utiliser des modules Node) natifs. https://electron.atom.io/docs/tutorial/using-native-node-node-modules/

45
subwaymatch

electron-rebuild sur postinstall.

Selon ce que vous faites, vous pouvez utiliser reconstruction électronique pour reconstruire serialport à la version. de electron que vous avez installé.

Faire cela:

npm install --save-dev electron-rebuild

$(npm bin)/electron-rebuild                 # Mac and Linux.

.\node_modules\.bin\electron-rebuild.cmd    # Windows.

Parce que j'oubliais de le faire après une installation de npm (et pour aider les autres personnes ayant téléchargé le projet), j'ai ajouté les deux scripts suivants à package.json:

"scripts": {
  "start": "electron .",

  "postinstall": "electron-rebuild",    
  "electron-rebuild": "electron-rebuild"
},

Le postinstall s'exécutera automatiquement après un npm install donc, une fois l’installation typique terminée, vous verrez un message du journal de la console avec electron-rebuild et il reconstruira automatiquement serialport et toute autre bibliothèque native dont vous disposez, en version electron. Cela signifie que vous ne devriez même pas avoir à penser à exécuter electron-rebuild aller de l'avant. ????

Pour relancer manuellement electron-rebuild il suffit de le lancer avec npm run electron-rebuild.

Easy-peezie, citron-squeezie!

9
Joshua Pinter

Créer un fichier .npmrc avec contenu:

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

Ouvrez un autre terminal et lancez npm install [yourpackage]

Gardez à l'esprit, de nouveaux paquets seraient installés avec la version électronique la plus élevée (cible), épargnez-vous donc quelques maux de tête et de dos et mettez à jour votre target = avec la version actuelle indiquée sur la page npm ou github.

3
d9ngle