2016-09-17 124 views
11

我有這個問題,即,從節點和NPM的全新安裝,serial port包不會在Hello World電子封裝以下錯誤加載:節點模塊版本不匹配:預計50

enter image description here

我在節點版本6.6.0和NPM版本3.10.7和OS X 10.11.6上。

我期待看看我是不是過時了,但看着this list,我找不到任何具有50的模塊版本。這是一個錯誤?

我試過npm rebuild,以及刪除模塊和重新安裝,但沒有骰子。

更新:即使當我運行node -v它打印v6.6.0,在Web控制檯中運行process.versions.node給我v6.5.0。這裏發生了什麼?

回答

15

這是一個known issue這是由serialport模塊使用爲不同版本的節點構建的本機代碼而導致的。如果你有興趣,你可以閱讀更多關於插件here的內容。它們只是用C/C++編寫的模塊,可以與節點連接,因此模塊可以更輕鬆地與硬件連接。

由該問題提出的解決方案是這樣的:

npm rebuild --runtime=electron --target=1.2.5 --disturl=https://atom.io/download/atom-shell --build-from-source 

如果您尚未安裝electron-rebuild,這可能是有幫助的,以確保重建過程中正常工作:

npm install --save-dev electron-rebuild 

即使當我運行節點-v它打印V6.6.0,在Web控制檯運行process.versions.node給我V6.5.0。這裏發生了什麼?

電子使用其自己的未連接到您的系統節點安裝節點的版本(見homepage來查看最新的電子使用節點版本,或者使用process.versions.node,就像你在這個問題所做的那樣)。

如果問題的原因,您可以嘗試舊版本(可能是1.1.0,它使用Chrome 50?)。

+2

感謝。我將電子版本更改爲1.3.1(正確安裝的最低版本),然後運行'npm rebuild --runtime = electron --target = 1.3.1 --disturl = https://atom.io/download/atom -shell --build-from-source',它現在都在運行。 – Alfo

+1

謝謝@ Aurora0001!它適用於電子1.4.3,而我的本地節點版本是4.2.1。 – supNate

4

在我的情況下,錯誤是:

App threw an error during load 
Error: Module version mismatch. Expected 50, got 48. 
    at Error (native) 
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:173:20) 
    at Object.Module._extensions..node (module.js:583:18) 
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:173:20) 
    at Module.load (module.js:473:32) 
    at tryModuleLoad (module.js:432:12) 
    at Function.Module._load (module.js:424:3) 
    at Module.require (module.js:483:17) 
    at require (internal/module.js:20:19) 
    at Object.<anonymous> (/myapp/node_modules/sqlite3/lib/sqlite3.js:4:15) 

後重建的錯誤是固定的:

npm install --save-dev electron-rebuild 

npm rebuild --runtime=electron --target=1.4.3 --disturl=https://atom.io/download/atom-shell --build-from-source 
相關問題