Я не уверен, какая из платформ / инструментов является корнем моей проблемы, поэтому задаю этот вопрос о SO, а не о проблемах одного из репозиториев Git-Hub. Я пытаюсь разработать проект на основе Polyonic. Сам по себе Polyonic - это своего рода начальный гибрид Electron и Ionic2. В моем проекте также используется node-serialport, который является собственным модулем.
Мои версии для разработки: - Node 7.4.0 - Electron 1.6.10
... и запуск ionic info
в папке src моего проекта дает:
global packages:
@ionic/cli-utils : 1.4.0
Cordova CLI : 7.0.1
Gulp CLI : CLI version 3.9.1 Local version 3.9.1
Ionic CLI : 3.4.0
local packages:
@ionic/app-scripts : 1.3.7
@ionic/cli-plugin-cordova : 1.4.0
@ionic/cli-plugin-gulp : 1.0.1
@ionic/cli-plugin-ionic-angular : 1.3.1
Cordova Platforms : browser 4.1.0
Ionic Framework : ionic-angular 3.3.0
System:
Node : v7.4.0
OS : Linux 4.6
Xcode : not installed
ios-deploy : not installed
ios-sim : not installed
npm : 4.0.5
Если я сделаю npm install
в каталоге src, затем npm install
в корневом каталоге, npm start
в корневом каталоге (который запускает скрипт gulp в семени Polyonic, которое объединяет проект Ionic), проект запускается и работает отлично, никаких проблем с узлом -последовательный порт.
Если я затем создам исполняемый файл, запустив electron builder
в корне моего проекта, а затем запустив исполняемый файл в консоли Chrome DevTools, я получу следующий результат:
Uncaught Error: The module '/home/vic/git/MyProject/build/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/vic/git/MyProject/build/node_modules/bindings/bindings.js:76:44)
at Object.<anonymous> (/home/vic/git/MyProject/build/node_modules/serialport/lib/bindings.js:3:35)
Я понимаю, что есть другие связанные вопросы по SO, которые предлагают использовать electron-rebuild
для обеспечения собственные модули построены на версии узла, ожидаемой Electron. Но если я захожу в папку src проекта, то запускаю:
rm -rf node_modules/serialport/build/*
node_modules/.bin/electron-rebuild -w serialport -f
... затем вернитесь в корневую папку моего проекта и запустите npm start
(он работает нормально, как и раньше), затем запустите electron-builder
и запустите исполняемый файл в консоли Chrome DevTools, я получаю следующий результат:
Uncaught Error: Cannot find module 'serialport'
at Module._resolveFilename (module.js:470)
at Function.Module._resolveFilename (/tmp/.mount_7laJTZ/usr/bin/resources/electron.asar/common/reset-search-paths.js:35)
at Function.Module._load (module.js:418)
at Module.require (module.js:498)
at require (internal/module.js:20)
at Object.<anonymous> (main.js:73788)
at __webpack_require__ (main.js:20)
at Object.<anonymous> (main.js:72414)
at __webpack_require__ (main.js:20)
at Object.<anonymous> (main.js:111408)
Мне кажется, что это дальше от работы, чем до того, как я начал заниматься этим electron-rebuild
. Где я ошибаюсь? Любая помощь или предложения будут оценены.