electron-johnny-five-examples
electron-johnny-five-examples copied to clipboard
"Uncaught Error: Module version mismatch." in bindings.js
I'm stuck on an error in the Electron Console that's preventing the 1-led script from reaching the point of communicating with my Arduino board (a Mega 2560).
I'm running:
- OS X El Capitan v10.11.5
- Node v6.2.2
- npm v3.9.5
- Arduino IDE v1.6.9
These are the steps I've followed:
- connect Arduino to computer via USB, and connect a LED as shown
- in Arduino IDE, verify that
Board
isArduino/Genuino Mega or Mega 2560
- verify that
Processor
isATmega2560 (Mega 2560)
- verify that
Port
is/dev/cu.usbmodem1421 (Arduino/Genuino Mega or Mega 2560)
- verify that
Programmer
isAVRISP mkII
- open
File > Examples > Firmata > StandardFirmata
- upload to Arduino
- close Arduino IDE
- in terminal,
git clone [email protected]:sofroniewn/electron-johnny-five-examples.git
- cd
electron-johnny-five-examples/1-led/
-
npm install
-
./node_modules/.bin/electron-rebuild
-
npm start
At this point, the Electron app starts and opens a new window. The "Click me!" button is initially disabled, but it never becomes enabled. If I open Developer Tools, I see this error in the Console:
/Users/twarr/electron-johnny-five-examples/1-led/node_modules/bindings/bindings.js:83 Uncaught Error: Module version mismatch. Expected 47, got 48.
I did some Googling and it appears that this can happen if a package is installed with one version of Node, then another version is later installed:
http://stackoverflow.com/questions/15584529/module-version-mismatch-expected-11-got-1
That didn't happen in my case, but I tried the recommended solution anyways:
rm -rf node_modules; npm update
That results in:
npm WARN prefer global [email protected] should be installed with -g
> [email protected] install /Users/twarr/electron-johnny-five-examples/1-led/node_modules/nslog
> node-gyp rebuild
CXX(target) Release/obj.target/nslog/src/main.o
CXX(target) Release/obj.target/nslog/src/nslog_mac.o
SOLINK_MODULE(target) Release/nslog.node
> [email protected] install /Users/twarr/electron-johnny-five-examples/1-led/node_modules/serialport
> node-pre-gyp install --fallback-to-build
[serialport] Success: "/Users/twarr/electron-johnny-five-examples/1-led/node_modules/serialport/build/Release/serialport.node" is installed via remote
> [email protected] postinstall /Users/twarr/electron-johnny-five-examples/1-led/node_modules/electron-prebuilt
> node install.js
[email protected] /Users/twarr/electron-johnny-five-examples/1-led
├── [email protected]
├── [email protected]
└── [email protected]
However, that doesn't appear to have any effect; running npm start
again, I still see the same error in the Electron Console.
While this issue doesn't appear to be unique to this repo (it seems to be a general Node issue that can occur under a variety of circumstances), it does happen (at least for me) after following all instructions in the 1-led example exactly, so I'm hoping it's something you've encountered or are familiar with.
Please let me know if you have any troubleshooting ideas, or if you need me to provide any more details. I'm not sure how to proceed. Thanks!
It looks like this might have something to do with Node v6.x. I installed nvm and downgraded to Node v5.11.1, and now it's working fine!
@troywarr I can confirm that using node 5.11.1 fixed that error, interestingly.
However, for testing I tried to use a more recent electron-prebuilt
version, as well.
Anything 1.0+ throws the same error (after having to modify main.js a bit to comply to the new API):
/Users/tom/gits/electron-johnny-five-examples/1-led/node_modules/bindings/bindings.js:83 Uncaught Error: Module version mismatch. Expected 48, got 47.
Version 0.37.8
, the one before the 1.0 version bump works just fine though.
Any idea why that is happening? I'd like to use more recent electron versions.
I can confirm this issue in Linux, it appears to be related to paths, I guess the solution is to refactor the entire code piece by piece to see what is going on.
This is my error.
/home/user/electronj5/1-led/node_modules/johnny-five/node_modules/serialport/node_modules/bindings/…:83 Uncaught Error: Module version mismatch. Expected 47, got 46.
I downgraded to node 4.00 and it didn't worked, node v5.11.1 works out of the box, this is then an error associated to a dependency of original build of the app. I'm intrigued....
Regards.
Hi all,
I have the same problem:
Error: Module version mismatch. Expected 49, got 48. at Error (native) at process.module.(anonymous function) as dlopen at Object.Module._extensions..node (module.js:568:18) at Object.module.(anonymous function) as .node at Module.load (module.js:458:32) at tryModuleLoad (module.js:417:12) at Function.Module._load (module.js:409:3) at Module.require (module.js:468:17) at require (internal/module.js:20:19) at bindings /Projects/ElectronDevice/node_modules/bindings/bindings.js:76:44)
npm latest node latest johnny-five latest "electron-prebuilt": "^1.3.1" OS ubuntu
I was looking for this issue on all over the net, but nothing resolves this... was trying all combinations of the npm, node and johnny-five but, I guess didn't find right combination...
any idea ?
Yes, as the others said before just make sure you are using the same node version (5.11.1) and the standard instructions and it will work, now for a definitive solution a full step by step rebuilt of the project seems to be in order so all the dependencies are in accordance to your setup.
I will try that soon and will post the results here.
Tried installing node 5.11.1 and then rm -rf node_module
s then npm install
even installed electron-rebuild and done ./node_modules/.bin/electron-rebuild
... but error still persist... I am so frustrated, doing this almost 30 hours... but nothing helps ... so far...
Did you sourced your node version?
you can use this. https://github.com/tj/n
Basically, after you install your node version and run node -v to check which version is actually running then using n (link above) you can change the version to the want you want (after that you can run node -v to verify this is the case) Once you have done that, remove, rebuild as you just did and it must work! (That is what I did) Im running node in ubuntu 14 LTS but for mac should be the same.
sudo npm cache clean -f Here we go sudo npm install -g n sudo n "version" sudo ln -sf /usr/local/n/versions/node/<VERSION>/bin/node /usr/bin/node
then rebuild and re run!
I have struggle with this some time now, and the problem was in electron version. Your solution was working perfectly for this version combination of electron and johnny-five.
this was my package.json:
{ "name": "JumpDevice", "version": "1.0.0", "description": "Mesuring jump distance", "main": "app.js", "dependencies": {}, "devDependencies": { "electron-prebuilt": "^1.3.1", "electron-rebuild": "^1.1.5", "johnny-five": "^0.9.61" }, "scripts": { "test": "echo "Error: no test specified" && exit 1", "start": "electron .", "clean": "rm -rf node_modules && npm install" }, "repository": { "type": "git", "url": "git+ssh://[email protected]/Sparo/electrondevice.git" }, "keywords": [ "Jump", "mesuring", "ultrasound" ], "author": "Nenad Sparic", "license": "ISC", "homepage": "https://bitbucket.org/Sparo/electrondevice#readme" }
and now package.json is
{ "name": "JumpDevice", "version": "1.0.0", "description": "Mesuring jump distance", "main": "app.js", "dependencies": { "electron-prebuilt": "^0.36.7", "johnny-five": "^0.9.23" }, "devDependencies": { "electron-rebuild": "^1.1.3" }, "scripts": { "test": "echo "Error: no test specified" && exit 1", "start": "electron .", "clean": "rm -rf node_modules && npm cache clean -f && npm install" }, "repository": { "type": "git", "url": "git+ssh://[email protected]/Sparo/electrondevice.git" }, "keywords": [ "Jump", "mesuring", "ultrasound" ], "author": "Nenad Sparic", "license": "ISC", "homepage": "https://bitbucket.org/Sparo/electrondevice#readme" }
I hope there will be a moment that I could go into the newer version of electron...definitely, this is a super tool for cross-OS application.
The issue here isn't related to johnny-five, the main problem comes from node-serialport. You will find some workarounds here: https://github.com/EmergingTechnologyAdvisors/node-serialport/issues/538