Подтвердить что ты не робот

Node конфликт версии модуля при установке модулей для электрона

Я пытаюсь сделать приложение Electron (https://electron.atom.io/), которое считывает данные из моего последовательного порта. Я новичок в веб-технологиях в целом, я знаю некоторый javascript, но я парень С++.

Итак, я потянул их быстрый старт от github, побежал

npm install && npm start

С этой легкостью я попытался установить и запустить serialport с помощью

npm install serialport

С установленным и работающим с тестовым файлом, я попытался объединить эти два и поместить require('serialport') в файл index.html. При этом я получаю эту ошибку:

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)

Есть идеи, как это исправить? Я не использую две разные версии Node, почему я получаю эту ошибку.

Информация о системной ОС:

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

Ответ 1

При возникновении такого несоответствия версии вы можете выбрать распределение электрона с целевой версией Node или перестроить пакет npm. Поскольку распределение электрона пропустило Node v7.0.0, которое настроено с NODE_MODULE_VERSION 51 (и переместилось на v7.4.0), вам придется перестроить пакет serialport.

В вашем каталоге приложений (где package.json находится в),

1. Установите electron-rebuild

npm install --save-dev electron-rebuild


2. Перестроить

./node_modules/.bin/electron-rebuild



Или даже лучший вариант - установите переменные среды с первого места.

# Electron 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

Взгляните на страницу документации Electron для использования собственных модулей Node. https://electron.atom.io/docs/tutorial/using-native-node-modules/

Ответ 2

electron-rebuild on postinstall.

В зависимости от того, что вы делаете, вы можете использовать electron-rebuild, чтобы перестроить serialport на версии electron, которую вы установили.

Для этого:

npm install --save-dev electron-rebuild

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

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

Потому что я забыл это сделать после установки npm (и чтобы помочь другим, загрузившим проект), я добавил следующие два сценария в package.json:

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

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

postinstall будет автоматически запускаться после выполнения npm install, поэтому после завершения стандартной установки вы увидите сообщение журнала консоли с electron-rebuild, и оно автоматически перестроит odbc и любую другую родную библиотеку, которую вы должны версии electron. Это означает, что вам даже не нужно думать о запуске electron-rebuild в будущем. 👍

Для повторного запуска electron-rebuild вручную запустите его с помощью npm run electron-rebuild.

Easy-peezie, lemon-squeezie!

Ответ 3

Создать файл .npmrc с контентом:

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

Откройте другой терминал и запустите npm install [yourpackage]

Имейте в виду, некоторые новые пакеты будут установлены с наивысшей электронной версией (целью), поэтому сохраните себе головную боль/боль в спине и обновите свой target = с текущей версией, указанной на npm или github стр.