我正在尝试将我的应用程序从电子版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配合使用,是否还需要安装其他依赖项?
答案 0 :(得分:0)
我有这个工作。
要使本机节点js模块与Windows上的electronic 4配合使用,需要使用“延迟负载挂钩”进行编译。更多信息:https://electronjs.org/docs/tutorial/using-native-node-modules#a-note-about-win_delay_load_hook和https://github.com/nodejs/node-addon-api/issues/269#issuecomment-455580129。完成这些更改后,我失败的模块开始工作。
关于其他模块为何不进行这些更改的原因是因为它们直接使用node-gyp。它会使用此钩子。
我失败的模块使用cmake-js,它需要上述其他更改。