2015-05-14 23 views
9

我试图安装node_mouse,当我查看我的节点模块文件夹而不是正常的.js文件扩展名时,发现一个.node文件扩展名。我怎么能运行node_mouse?我看了这个,我认为它可能是用C++编写的插件,但我并不确定(Node addons如何使用.node文件?

+4

你不应该考虑扩展,只需要像其他模块那样“需要”模块。你有错误吗? – loganfsmyth

+1

我是,但我没有意识到我没有一个合适的C++编译器,现在正在处理这个问题。 – idude

+1

我也遇到了一些与.node文件扩展名有关的错误,你能否给我一个线索,你是如何得到它的工作? –

回答

1

是的,正常的“require”用法适用于.node文件。这些文件的要点是创建可移植的二进制文件(使用C++中的node-gyp),可以像普通节点所要求的那样引用它。见node addon docs的hello.js部分:

const addon = require('./build/Release/addon'); 

console.log(addon.hello()); 

寻找这个NPM LIB之后,它是由节点正确地装在我的Windows,Mac和Linux虚拟机的几个不同的节点版本,但二进制抛出错误数组。在Windows中,它具有Windows作为构建目标的特定版本(可能是NT,因为Windows 10将引发一个错误):

Error: %1 is not a valid Win32 application. 

在OS X上,这使dyld无法打开由二进制引用的共享库。 (见男子dlopen的):

Error:dlopen(/.../node_mouse/node_mouse.node, 1): no suitable image found. 

在Linux中,我们得到了一个ELF头错误,它告诉我们,二进制不能在该操作系统上运行。

Error: /app/available_modules/1484064894000/node_mouse/node_mouse.node: invalid ELF header 

author似乎做了很多的Windows NT工作,所以如果你真的需要这方面的工作,找到Windows NT的全新副本的所有开发附加功能。

最后,考虑在代码库中运行第三方封闭源代码的安全风险(特别是控制鼠标移动的代码)。