我不確定哪些平臺/工具是我的問題的根源,因此在SO上提出這個問題而不是Git-Hub存儲庫之一的問題。我試圖根據Polyonic開發一個項目。 Polyonic本身就是Electron和Ionic2的種子混搭。我的項目也使用node-serialport,這是一個本地模塊。使用Ionic2,串口和電子構建器構建電子系統
我的開發版本是: - 節點7.4.0 - 電子1.6.10
...在我的項目的src文件夾中運行ionic info
給出:
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
位於根目錄(在Polyonic種子中運行捆綁Ionic項目的gulp腳本),項目啓動並運行完美,沒有node-serialport問題。
如果我再在我的項目的根目錄運行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)
我認識到,有other related questions在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
之前更遠的感覺。我哪裏錯了?任何幫助或建議,將不勝感激。
Whoa酷,我剛剛添加你作爲(私人)github回購協作者...看看在串行服務分支...你可以聊天我freenode處理vicatcu如果你想 – vicatcu
你可能已經知道這一點,但仔細閱讀本地和電子節點的串行端口回購問題揭示了用戶空間中的許多混亂。我已經能夠成功地建立了瑣碎的項目:https://github.com/johnny-five-io/electron-serialport – vicatcu
利用農閒直接的信息請與我聯繫(https://slackin.electron.build/)。不清楚如何使用freenode :) – develar