Linux节点模块版本不匹配

时间:2017-04-11 15:55:00

标签: node.js linux

我是初学者,我试图在我的树莓派上运行Homebridge。当我去运行它时,我收到一个错误:

pi@raspberrypi:/ $ 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.

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

干杯

1 个答案:

答案 0 :(得分:0)

由于有问题的文件以.node结尾,因此它是节点运行时的二进制扩展,因此需要重新编译以与特定版本的节点一起使用。

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

我的下一步是cd /usr/lib/node_modules/homebridge/node_modules/mdns并尝试通过调用mdns重建npm rebuild模块(如错误消息中所述)。请注意,这假设您具有所需的环境在你的Pi上编译(即gcc,g ++,make,node-gyp等)

最后,我将考虑通过running a cross-compiler为PI平台重建所需的模块。

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

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

可以在电子制造商源代码库的READMEBugs部分找到更多策略。