2

アプリケーションを electron 1.8.1 から 4.0.6 にアップグレードしようとしています。複数のネイティブ ノード js モジュールを使用しています。それらはすべて正常にコンパイルされます (またはビルド済みのバイナリが利用可能です)。

モジュールの 1 つを要求すると、次のエラーが発生します。

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 を使用しています。

electron 3 まで、node_modules/electron/dist に多くの DLL が存在することに気付きました。これらの DLL は electron 4 には存在しません。

ネイティブ モジュールが electron 4 で動作するためにインストールする必要がある追加の依存関係はありますか?

4

1 に答える 1

2

これを機能させました。

ネイティブ ノード js モジュールが Windows で electron 4 と連携するには、"Delay Load Hook" を使用してコンパイルする必要があります。詳細: 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 を使用しています。

于 2019-03-25T08:06:36.927 に答える