web-dev-qa-db-ja.com

Electronのapp.getAppPath()はどこを指していますか?

Browserifyを使用して、アプリのすべての.jsファイルを_dist/main.js_にマージしています。私の_package.json_は次のようになります:

_"main": "./dist/main.js",
"scripts": {
    "start": "electron ./dist/main.js",
},
"bin": {
  "electron": "./node_modules/.bin/electron"
}
_

_npm run start_を使用してアプリケーションを正しく実行できます。ただし、_main.js_でapp.getAppPath()を使用すると、次のようになります。

_/home/myuser/projects/electronProject/node_modules/electron/dist/resources/default_app.asar_

私はこれが

_/home/myuser/projects/electronProject/dist/main.js_

この方法の使い方を誤解しましたか? Electronプログラムのエントリポイントのパスを取得するにはどうすればよいですか? _default_app.asar_の役割は何ですか?

ありがとう

9
Marco Ancona

誰が同じ問題に遭遇したかもしれません...それはおそらくあなたの電子配置フィールドmainpackage.json

メインフィールドで指定されたスクリプトは、メインプロセスを実行するアプリの起動スクリプトです。

公式ウェブサイト からのサンプルコード:

{
  "name": "your-app",
  "version": "0.1.0",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  }
}

app.getAppPath()出力:

YOUR_PATH_TO/electron-クイックスタート

コードスニペットをに変更した場合

{
  "name": "your-app",
  "version": "0.1.0",
  "main": "main.js",
  "scripts": {
    "start": "electron YOUR_PATH_TO/main.js"
  }
}

次に、app.getAppPath()の出力:

YOUR_PATH_TO/electronic-quick-start/node_modules/electronic/dist/resources/default_app.asar

したがって、解決策は次のとおりです。起動スクリプトを変更する場合は、mainフィールドで変更するだけでなく、 スクリプトフィールド.。

1
han

現在のアプリケーションディレクトリを返します。

app.getAppPath()
文字列を返します-現在のアプリケーションディレクトリ。

docs から。

Asarファイルは、ファイルを相互に追加するだけの単純なアーカイブ形式です。アプリケーションをどのように構築しているかは正確にはわかりませんが、electron-packagerelectron-builderなどのツールはファイルをresources/app.asarアーカイブに出力し、そこからファイルを実行します。これは、現在のアプリケーションディレクトリがsomething/resources/app.asarになることを意味します。そこから、メインファイルはsomething/resources/app.asar/main.jsにあります。

1
DavidTheWin

__dirname(node.js)またはprocess.resourcesPath(電子)を使用しないのはなぜですか?

https://github.com/electron/electron/blob/master/docs/api/process.mdhttps://nodejs.org/docs/latest/api/globals。 html#globals_dirname

0
fhå