"エクスポートノート"はどこに行くのですか?
このガイドでは、小さなElectronアプリを使用しています。 クリック ノートのエクスポート ページ内のAPIを呼び出し、メインプロセスに交差し、CSVを書き込みます。 動作は複数のファイルに分散されます。
CSVは、Electronプロセス間でエクスポートします
-
レンダラー→プリロード
notes.exportCsv()renderer.jsによって公開されるAPIを呼び出しますpreload.js. -
プロセス間
notes:exportプリロードはIPCチャネルを起動します。これは、メインプロセスへの名前付きメッセージです。 -
主なプロセスエクスポートハンドラー
main.jsそのチャネルを処理し、CSVライタを呼び出します。
csv.js メモの書式設定→ main.js 書き込み downloads/notes.csv.
CSV輸出について尋ねる
エージェントをREAに接続します そして、それにappディレクトリまたはASARファイルを与えます:
私はこのアプリでノートをエクスポートするときに何が起こるかを見つけるためにREAを使用し CSVはどこで作成されますか?
プロンプトの例。 アプリケーションフォルダへの絶対パスを含めるか、 app.asar.
REAはアプリケーションファイルを読み取り、エントリポイント、モジュール、およびプロセス境界のマップを構築します。 エージェントはそのマップを使用して、調査をエクスポート機能に絞り込みます。
エクスポートコードのトレース
ページは小さなAPIを呼び出します
document.querySelector("#export").addEventListener("click", async () => {
const destination = await window.notes.exportCsv();
document.querySelector("#status").textContent = `Saved to ${destination}`;
});
ページはメソッド名を知っています。 実装はプリロード内に存在し、レンダラーに公開されます。
contextBridge.exposeInMainWorld("notes", {
exportCsv: () => ipcRenderer.invoke("notes:export"),
});
REAレコード notes.exportCsv とリテラルチャンネル notes:export. その呼び出しをメインプロセスの単一の一致ハンドラーとペアにします。
ipcMain.handle("notes:export", () => {
const destination = path.join(app.getPath("downloads"), "notes.csv");
writeFileSync(destination, toCsv(notes), "utf8");
return destination;
});
ハンドラーを読むことは元の質問に答えます: csv.js メモをフォーマットし、メインプロセスは書き込みます notes.csv ユーザーのダウンロードフォルダに移動します。
{
"literal_channels": 1,
"renderer_transmissions": 1,
"main_handlers": 1,
"paired_renderer_transmissions": 1,
"ambiguous_renderer_transmissions": 0
}
以下のダウンロード可能な例でREA4.1.0によって記録されました。 ソースの場所は、API、チャネル、およびハンドラーの調査結果に伴います。
自分で例を分析してください
例をダウンロードして解凍します。 アーカイブには完全なものが含まれています notes-example フォルダ。 それを分析する Node.js と npm; Electron この例では必要ありません。
6つのソースファイルを参照します。
npx -y rea-agents@latest analyze-javascript-application \
/absolute/path/to/notes-example --json
パスを解凍したフォルダに置き換えます。 あなたは1つのIPCチャネルと1つの一致するハンドラを見つける必要があります normalized_result.summary.ipc. ソースの場所は次のとおりです normalized_result.graph.
独自のアプリの場合は、そのディレクトリまたはASARパスで同じコマンドを使用します。 エージェントは、REAの機能トレースツールを使用して、リテラル文字列、API名、またはIPCチャネルを追跡できます。
CSVライターを検査する
フォロー
notes:exportそのハンドラに。 どの入力がCSVライターに到達し、ファイルの書き込みに失敗した場合はどうなりますか?
これらの詳細を検査するには、ソースの場所を使用します。 計算されたチャネル名とあいまいなハンドラーは未解決のままである可能性があります。
- Notionのクリップボードブリッジに従ってください パッケージ化されたElectronアプリにも同じアプローチを適用します。
- ブラウザのエクスポートを観察する実際のクリックをキャプチャし、それが作る要求を参照してください。
- ネイティブ関数に従う機能がネイティブコードに依存している場合は、バイナリに進みます。