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
_の役割は何ですか?
ありがとう
誰が同じ問題に遭遇したかもしれません...それはおそらくあなたの電子配置フィールドmain
のpackage.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フィールドで変更するだけでなく、 スクリプトフィールド.。
現在のアプリケーションディレクトリを返します。
app.getAppPath()
文字列を返します-現在のアプリケーションディレクトリ。
docs から。
Asarファイルは、ファイルを相互に追加するだけの単純なアーカイブ形式です。アプリケーションをどのように構築しているかは正確にはわかりませんが、electron-packager
やelectron-builder
などのツールはファイルをresources/app.asar
アーカイブに出力し、そこからファイルを実行します。これは、現在のアプリケーションディレクトリがsomething/resources/app.asar
になることを意味します。そこから、メインファイルはsomething/resources/app.asar/main.js
にあります。
__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