无法在Windows上通过电子4.0.6加载某些本机节点js模块

时间:2019-03-22 05:11:01

标签: node.js windows electron native-module

我正在尝试将我的应用程序从电子版1.8.1升级到4.0.6。我正在使用多个本机节点js模块。它们都可以成功编译(或可以使用预构建的二进制文件)。

需要其中一个模块时出现以下错误。

XXXX\node_modules\electron-log\renderer.js:34 [10:14:51.109] Failed to add 
module. Error: Error: The specified procedure could not be found.
\?\XXXXX\node_modules\pc-ble-driver-js\build\Release\pc-ble-driver-js- 
 sd_api_v2.node

而其他本机模块(例如serialport,noble-uwp)正在加载并正常工作。

此错误通常表明缺少所需的DLL。我已经使用Dependency Walker(http://www.dependencywalker.com/)来检查依赖关系,但无法确定错误。我试图比较有效模块的依赖性和我遇到错误的依赖性。我没有发现明显的差异。

我已安装Visual Studio 2015。我还安装了VC ++ 2015可再发行组件。

我对电子的特定依赖性是:

"devDependencies": {
    "electron": "~4.0.6",
    "electron-builder": "~20.39.0",
    "electron-rebuild": "^1.8.4"
},

我正在使用node-js 10.15.3。

我注意到直到电子3之前,node_modules / electron / dist都存在许多DLL。这些DLL与电子4不存在。

要使本机模块与电子4配合使用,是否还需要安装其他依赖项?

1 个答案:

答案 0 :(得分:0)

我有这个工作。

要使本机节点js模块与Windows上的electronic 4配合使用,需要使用“延迟负载挂钩”进行编译。更多信息:https://electronjs.org/docs/tutorial/using-native-node-modules#a-note-about-win_delay_load_hookhttps://github.com/nodejs/node-addon-api/issues/269#issuecomment-455580129。完成这些更改后,我失败的模块开始工作。

关于其他模块为何不进行这些更改的原因是因为它们直接使用node-gyp。它会使用此钩子。

我失败的模块使用cmake-js,它需要上述其他更改。