Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用.node文件?_Javascript_Node.js_Npm_Node Gyp - Fatal编程技术网

Javascript 如何使用.node文件?

Javascript 如何使用.node文件?,javascript,node.js,npm,node-gyp,Javascript,Node.js,Npm,Node Gyp,我正在尝试安装,当我查看我的node modules文件夹时,发现了一个.node文件扩展名,而不是一个普通的.js文件扩展名。如何运行node_鼠标?我看了这个,我认为它可能是用C++编写的一个插件,但我不是完全肯定的( 是,正常的“要求”用法适合.No.Frase.这些文件的要点是创建可移植的二进制文件(使用节点gyp,来自C++),可以像普通节点一样引用。请参阅的hello.js部分: 在查看这个NPM库之后,它被节点正确地加载到我的Windows、Mac和Linux虚拟机上,有几个不同的

我正在尝试安装,当我查看我的node modules文件夹时,发现了一个.node文件扩展名,而不是一个普通的.js文件扩展名。如何运行node_鼠标?我看了这个,我认为它可能是用C++编写的一个插件,但我不是完全肯定的(<)/p> 是,正常的“要求”用法适合.No.Frase.这些文件的要点是创建可移植的二进制文件(使用节点gyp,来自C++),可以像普通节点一样引用。请参阅的hello.js部分:

在查看这个NPM库之后,它被节点正确地加载到我的Windows、Mac和Linux虚拟机上,有几个不同的节点版本,但是二进制文件抛出了一系列错误。在windows上,它将特定版本的windows作为构建目标(可能是NT,因为windows 10会引发错误):

在OSX上,这是dyld无法打开二进制文件引用的共享库。(见"公开"):

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

Error: /app/available_modules/1484064894000/node_mouse/node_mouse.node: invalid ELF header
似乎做了很多Windows NT的工作,所以如果你真的需要这项工作,找到一个新的副本Windows NT与所有的开发插件


P>最后,考虑在代码库中运行第三方封闭源二进制文件的安全风险(尤其是控制鼠标移动的二进制文件)。

YEP。这些节点文件是Node Addons(二进制模块),您应该能够在其上使用<代码>要求()/代码>。请注意,它将首先查找

.json
.js
文件

从:

已编译加载项二进制文件的文件扩展名为.node(如下所示 与.dll或.so相反)。require()函数是用来查找 文件扩展名为.node的文件,并将其初始化为 动态链接库

调用require()时,通常可以省略.node扩展名并 Node.js仍将查找并初始化加载项。然而,有一个警告, Node.js将首先尝试定位和加载模块或 恰好共享相同基名称的JavaScript文件。对于 实例,如果与 然后require('addon')将优先于 加载addon.js文件并改为加载它

您还应该知道这些是二进制模块,因此加载它们非常类似于运行标准的可执行文件(如果您刚刚熟悉Windows,请考虑
.exe
文件)。与本机可执行文件一样,它们更多地依赖于系统的具体情况,并且可能存在安全风险。虽然标准的
.js
模块是可移植的(有一些注意事项),但是
.node
二进制模块基本上是为特定的机器体系结构和操作系统,甚至是特定版本的node构建的。如果您在加载二进制模块时遇到问题,您应该确保您的系统运行的是正确的版本,并与提供商确认您的系统实际上受到支持


有时特定的功能或性能需求需要它,但对于Node.js,除非您真的必须加载二进制模块,否则不应该加载二进制模块

您不需要考虑扩展,只需像任何其他模块一样要求模块。你有什么错误吗?我是,但我没有意识到我没有一个合适的C++编译器,现在正在处理这个问题。我也在.No.file扩展中得到一些错误,你能告诉我你是如何工作的吗?也有问题。请提出建议。对于扩展名为.node的文件,require()也存在同样的问题。注释“在windows上,它将特定版本的windows作为生成目标(可能是NT,因为windows 10会引发错误)”没有意义,因为windows 10是windows NT的一个实例。您可能没有意识到,但没有一个“Windows NT”名称适用于所有非基于DOS的Windows版本,包括从Windows XP开始的所有消费者、服务器和嵌入式版本。此外,您收到的错误消息可能与Windows版本无关。不清楚为什么会出现这种情况,因为有很多原因导致某些东西可能不是有效的Win32应用程序。
Error: %1 is not a valid Win32 application.
Error:dlopen(/.../node_mouse/node_mouse.node, 1): no suitable image found. 
Error: /app/available_modules/1484064894000/node_mouse/node_mouse.node: invalid ELF header