プリロードされた AppData ディレクトリを取得するにはどうすればよいですか?
Background.js
リーリーpreload.js
リーリーconfig-manager.js
リーリーこれを実行すると、このエラーが発生します。
リーリーこれは、後で「アプリ」が初期化されるためだと思います。
私の最終的な目標は、AppData ディレクトリから json 構成を読み取ることです。
これを行うより良い方法があれば、お気軽にお知らせください。
ユーザーは実行時に構成を変更できる必要はありません。ただし、defaultConfig
からのデフォルト値を構成ファイルに書き込むことができる必要があります。
app.getPath()
このメソッドは、アプリケーションが「準備完了」している場合にのみ使用できます。app.on('ready' () => { ... });
を使用して、「ready」イベントを検出します。詳細については、Electron の Events: 'ready' イベントを参照してください。preload.js
スクリプトに関して、関数を直接組み込むと、内容が読みにくく理解しにくくなる場合があります (たとえrequire
によってのみ実装されていたとしても)。現在、この文書には懸念の分離がありません。 IE: 「構成」機能がpreload
スクリプトに組み込まれています。問題を分離したい場合は、preload.js
ファイルから「config」コードをリファクタリングし、それを独自のファイルに配置する必要があります。このように、preload.js
ファイルは、IPC チャネルを構成し、関連するデータ (存在する場合) を転送するためにのみ使用されます。さて、
app.getPath('appData')
問題を解決する方法を見てみましょう。main.js
main.jsファイルで、アプリケーションが「準備完了」になったことを検出し、
config-manager.jsファイル経由で
appData を取得します。内容の。(メインスレッド)
リーリー
config-manager.js
ファイルで、「パス」変数を
ElectronApp.getPath('appData')
への参照をloadConfig()
関数スコープに移動しました。これは、これらの変数がその関数でのみ使用されるためです。ファイル内の別の場所で使用するためにそれらを公開する必要がある場合は、それらをloadConfig()
関数スコープの外に戻す必要があります。loadConfig()
ヘルパー関数
関数に移動しました。これは、アプリケーションが
main.js# から「準備完了」した後であるためです。 ## この関数を呼び出します。pathExists()
の実装は複数回使用されるため、この関数を追加しました。最後に、必要に応じてアプリケーションのメインスレッドのどこからでも構成オブジェクトを簡単に取得できるように、
let appConfig = require('config-manager')getConfig()
関数を追加しました (使用する必要があるファイルにこの関数を含めるだけです)それ )。 IE:。
リーリーconfig-manager.js
(メインスレッド)典型的な
preload.jsリーリー
IPC チャネルの実装と、メイン スレッドまたはレンダリング スレッドでそれらを送受信する方法を理解するためのサポートが必要な場合は、新しい質問をしてください。