2015-02-27 2 views
2

Я получаю сообщение об ошибке несоответствия версии модуля, когда я пытаюсь использовать безглавой браузер с оболочкой рабочего стола. Я пробовал Zombiejs и Phantomjs с nw.js и atom-shell; в обоих случаях, как только браузер без гарнитуры входит в игру, приложение выходит из строя с ошибкой несоответствия модуля.Ошибка версии модуля с браузером без браузера и настольным узлом

Вот ошибка с Phantomjs и атом-оболочки:

Uncaught Exception: 
Error: Module version mismatch. Expected 41, got 14. 
    at Error (native) 
    at Object.module.(anonymous function) (ATOM_SHELL_ASAR.js:118:20) 
    at Object.module.(anonymous function) [as .node] (ATOM_SHELL_ASAR.js:118:20) 
    at Module.load (module.js:370:32) 
    at Function.Module._load (module.js:325:12) 
    at Module.require (module.js:380:17) 
    at require (module.js:399:17) 
    at bindings (/Users/Ajay/Projects/atom-shell/node_modules/phantom/node_modules/dnode/node_modules/weak/node_modules/bindings/bindings.js:76:44) 
    at Object.<anonymous> (/Users/Ajay/Projects/atom-shell/node_modules/phantom/node_modules/dnode/node_modules/weak/lib/weak.js:7:35) 
    at Module._compile (module.js:475:26) 

Любая идея, что вызывает ошибку?

+0

Попробуйте запустить скрипт '/ bootstrap' =>' скрипт/build' на консоли ... поможет ли это? – phi

ответ

6

Ошибка отправлена ​​с Node.js internals. Вы смешиваете двоичные модули, созданные для разных версий io.js или Node.js. Версия модуля относится к макросу C++ NODE_MODULE_VERSION, который доступен в JavaScript как process.versions.modules.

14, кажется, номер версии для Node.js, так как Node.js v0.11.11.

Я не могу найти информацию о 41 , хотя ясно, что 42 - номер версии, используемой io.js v1.0.0.

UPDATE: 41 это версия io.js сгруппированных в atom-shell внутри, которая вырезанных из io.js v1.0.0-pre.

nw.js/atom-shell использует свою собственную копию Node.js для запуска двигателя. В терминале попробуйте выполнить чистую установку и исполнение, не перейдя в атомную оболочку.

Также обратите внимание, что эта проблема не должна быть эксклюзивной для Phantom.js или Zombie.js, но для всех модулей с использованием кода на C++.

Чтобы решить эту проблему, используйте один из следующих инструкций:

  • атом-оболочка предлагает tutorial для использования родных модулей.
  • nw.js также имеет tutorial
+0

Я пробовал код без оболочки атома или nwjs, и он работает хорошо. Интересно, есть ли способ запустить их обоих? – apparatix

+0

А, наконец, нашел, откуда пришел 41. Ответ обновлен. @apparatix Я не использую atom-shell или nw.js, но в основном вам либо нужно использовать ту же версию Node.js при установке модуля, как использует nw.js/atom-shell, или установить модуль из nw. JS/атом-оболочки. Например, у атома-оболочки есть пользовательская команда [apm] (https://github.com/atom/atom-shell/blob/master/docs/tutorial/using-native-node-modules.md), предназначенная для этого вид целей. –

+0

У меня есть несоответствие версии модуля. Ожидаемый 46, получил 14.' Что это значит? – hellboy