1

electron では、ノード モジュールvoskは にあるいくつかの共有オブジェクトにアクセスする必要がありますnode_modules/vosk/lib/

私が今抱えている問題は、require('vosk')自分main.jsの AppImage ファイルを実行しようとすると、次のようになることです。

A JavaScript error occurred in the main process
Uncaught Exception:
Error: Dynamic Linking Error: /tmp/.mount_CantooClaxGf/resources/app.asar/node_modules/vosk/lib/linux-x86_64/libvosk.so: Cannot open the shared object: It's not a folder
    at new DynamicLibrary (/tmp/.mount_CantooClaxGf/resources/app.asar/node_modules/ffi-napi/lib/dynamic_library.js:75:11)
    at Object.Library (/tmp/.mount_CantooClaxGf/resources/app.asar/node_modules/ffi-napi/lib/library.js:47:10)
    at Object.<anonymous> (/tmp/.mount_CantooClaxGf/resources/app.asar/node_modules/vosk/index.js:24:21)
    at Module._compile (internal/modules/cjs/loader.js:1145:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1166:10)
    at Module.load (internal/modules/cjs/loader.js:981:32)
    at Module._load (internal/modules/cjs/loader.js:881:14)
    at Function.Module._load (electron/js2c/asar.js:769:28)
    at Module.require (internal/modules/cjs/loader.js:1023:19)
    at require (internal/modules/cjs/helpers.js:77:18)

ビルドのファイルに vosk を追加しようとしました:

 "build": {
    "files": [
      "dist/**/*",
      "src/assets/icons/*",
      "electron.js",
      "package.json",
      "assets/models/*",
      "node_modules/vosk/lib/*"
    ],

フォルダー内のファイルが表示されるようになりましたapp.asar.unpacked/node_modules/vosk/lib/が、アプリを実行すると、まだ同じエラーが発生します。

ハックに言及しているこの回答を見つけましたが、問題は解決せず、まったく同じエラーが引き続き発生します。

共有オブジェクトを見つけられるようにパッケージ化するにはどうすればよいですvoskか?

4

1 に答える 1

0

vosk のすべての依存関係を extraResources フィールドに入れて、electron のこの構成で問題を解決できました。

  "build": {
    "extraResources": [
      "node_modules/at-least-node/**/*",
      "node_modules/builder-util-runtime/**/*",
      "node_modules/debug/**/*",
      "node_modules/ffi-napi/**/*",
      "node_modules/fs-extra/**/*",
      "node_modules/get-symbol-from-current-process-h/**/*",
      "node_modules/get-uv-event-loop-napi-h/**/*",
      "node_modules/graceful-fs/**/*",
      "node_modules/jsonfile/**/*",
      "node_modules/ms/**/*",
      "node_modules/node-addon-api/**/*",
      "node_modules/node-gyp-build/**/*",
      "node_modules/ref-napi/**/*",
      "node_modules/ref-struct-di/**/*",
      "node_modules/sax/**/*",
      "node_modules/universalify/**/*",
      "assets/models/**/*"
    ],
    "files": [
      "dist/**/*",
      "src/assets/icons/*",
      "electron.js",
      "package.json"
    ],

この libも必要でした。

現在、期待どおりに動作しています

于 2021-03-25T22:07:54.500 に答える