2017-04-11 193 views
0

我是一名初学者,我试图在我的覆盆子pi上运行Homebridge。当我去运行它,我得到一个错误:Linux节点模块版本不匹配

[email protected]:/ $ homebridge 
/usr/lib/node_modules/homebridge/node_modules/mdns/lib/dns_sd.js:35 
    throw ex; 
    ^

Error: The module '/usr/lib/node_modules/homebridge/node_modules/mdns/build/Release/dns_sd_bindings.node' 
was compiled against a different Node.js version using 
NODE_MODULE_VERSION 48. This version of Node.js requires 
NODE_MODULE_VERSION 51. Please try re-compiling or re-installing 
the module (for instance, using `npm rebuild` or`npm install`). 
    at Object.Module._extensions..node (module.js:598:18) 
    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 Object.<anonymous> (/usr/lib/node_modules/homebridge/node_modules/mdns/lib/dns_sd.js:24:20) 
    at Module._compile (module.js:571:32) 
    at Object.Module._extensions..js (module.js:580:10) 
    at Module.load (module.js:488:32) 

其他博客文章指出该命令将解决这个问题:

npm install --save-dev electron-rebuild 

而且我也到这里来了一个错误:

npm WARN enoent ENOENT: no such file or directory, open '/package.json' 
npm WARN !invalid#1 No description 
npm WARN !invalid#1 No repository field. 
npm WARN !invalid#1 No README data 
npm WARN !invalid#1 No license field. 

任何人都可以提供任何建议吗?这将非常感激。

干杯

+0

其他版本为$ node -v v7.8.0 $ npm -v 4.2.0 –

回答

0

由于有问题的文件结束在.node,这是一个二进制扩展到节点运行,因此需要重新编译你的节点的特定版本的工作。

解决这个问题的第一步是询问Homebridge的其他用户他们是如何解决这个问题的。

我的下一个步骤将是cd /usr/lib/node_modules/homebridge/node_modules/mdns并试图重建mdns模块调用npm rebuild(如错误消息中提到。)请注意,这是假定你有你的皮编译所需的环境(如GCC,G ++, make,node-gyp等)

最后,我想研究一下PI平台上的running a cross-compiler所需的模块。

另一个想法是将您当前的node安装降级到electron-rebuild模块所需的版本。

和你有安装electron-rebuild的建议是值得商榷的,因为我不相信你在运行electron(我可能是错的。)无论如何,安装失败,因为指定的NPM命令必须在同一目录中调用作为电子文件package.json

其他策略可以在READMEBugs部分的电子制造商源回购中找到。