因爲項目的要求,須要用到Electron+Node。Electron確實有不少坑,剛接觸的時候,遇到了各類各樣的問題,不過最終都一一解決了。node
一些常見的問題,網上都有相應的資料,這裏就不介紹了。python
首先看一張圖,介紹Electron、Node使用不一樣的Chrome內核:c++
因爲chrome內核不一樣,須要編譯成一致的,才能讓node程序運行在Electron上,而網上推薦的最經常使用的編譯工具爲electron-rebuild,在使用Node-Serialport讀取本機串口的時,使用"./node_modules/.bin/electron-rebuild.cmd"編譯以後,就能解決問題。chrome
可是在使用node-ffi讀取dll時,遇到了如下的問題,本篇文章將圍繞這個問題探討如下解決方案:shell
NODE_MODULE_VERSION指的是Node.js的ABI(application binary interface)版本號,用來肯定編譯Node.js的C++庫版本,以肯定是否能夠直接加載而不需從新編譯。在早期版本中其做爲一位十六進制來儲存,而如今表示爲一個整數。npm
查看Electron版本文檔庫中,發現有這麼一句話:Change the NODE_MODULE_VERSION to 69json
問題緣由終於找到了,可是怎麼解決?問題分析到這種程度,能夠得出兩種解決方案:app
1) 選取Node版本與Electron版本的NODE_MODULE_VERSION一致。(因爲沒有找到electron各個版本對應的NODE_MODULE_VERSION,這裏能夠稍後研究一下)python2.7
2)依據electron-rebuild的思路,把兩者轉換成一致。在rebuild的時候,指定一下abi的值不就能夠了?查了一下這方面的資料,發現才真能指定abi的值。electron
"rebuild": "cnpm rebuild --runtime=electron --target=4.0.5 --disturl=https://atom.io/download/atom-shell --abi=69"
運行成功。同時解決了Node-Serialport串口讀取,也能解決Node-ffi讀取dll。
像須要python2.7x、vc++、.net framework2.0等的配置就不囉嗦了,查一下資料便可,最後附帶一張package.json配置以及都須要全局安裝哪些庫:
新手入門,會遇到各類各樣的問題,但最終總有解決的辦法。