Dove vanno le "note di esportazione"?
Questa guida utilizza una piccola app Electron. Scattandosi Note di esportazione chiama un'API nella pagina, attraversa il processo principale e scrive un CSV . Il comportamento è distribuito su più file.
L'esportazione di CSV attraverso i processi Electron
-
Renderer → precarico
notes.exportCsv()renderer.jschiama l'API esposta dapreload.js. -
Tra processi
notes:exportIl precarico richiama un canale IPC: un messaggio denominato al processo principale. -
Processo principaleUn gestore di esportazione
main.jsgestisce quel canale e chiama il writer CSV.
csv.js formatta le note → main.js scrivere downloads/notes.csv.
Chiedi informazioni sull'esportazione CSV
Connetti il tuo agente a REA e dagli la directory dell'app o il file ASAR:
Usa REA per trovare cosa succede quando esporto le note in questa app. Dove viene creato CSV?
Esempio prompt. Includere il percorso assoluto della cartella dell'applicazione o app.asar.
REA legge i file dell'applicazione e crea una mappa di entrypoints, moduli e confini di processo. L'agente utilizza tale mappa per restringere l'indagine alla funzione di esportazione.
Traccia il codice di esportazione
La pagina chiama una piccola API
document.querySelector("#export").addEventListener("click", async () => {
const destination = await window.notes.exportCsv();
document.querySelector("#status").textContent = `Saved to ${destination}`;
});
La pagina conosce il nome del metodo. L'implementazione vive nel precarico, che lo espone al renderer.
contextBridge.exposeInMainWorld("notes", {
exportCsv: () => ipcRenderer.invoke("notes:export"),
});
REA records notes.exportCsv e il canale letterale notes:export. Accoppia tale invocazione con il singolo gestore di corrispondenza nel processo principale.
ipcMain.handle("notes:export", () => {
const destination = path.join(app.getPath("downloads"), "notes.csv");
writeFileSync(destination, toCsv(notes), "utf8");
return destination;
});
La lettura del gestore risponde alla domanda originale: csv.js formatta le note e il processo principale scrive notes.csv nella cartella Download dell'utente.
{
"literal_channels": 1,
"renderer_transmissions": 1,
"main_handlers": 1,
"paired_renderer_transmissions": 1,
"ambiguous_renderer_transmissions": 0
}
Registrato da REA 4.1.0 nell'esempio scaricabile qui sotto. Le posizioni di origine accompagnano i risultati dell'API, del canale e del gestore.
Analizza l'esempio da solo
Scarica l'esempio e decomprimilo. L'archivio contiene il completo notes-example cartella. Analizzarlo con Node.js e npm; Electron non è necessario per questo esempio.
Sfoglia i sei file sorgente
npx -y rea-agents@latest analyze-javascript-application \
/absolute/path/to/notes-example --json
Sostituire il percorso con la cartella decompressa. Dovresti trovare un canale IPC e un gestore corrispondente in normalized_result.summary.ipc. Le posizioni di origine sono in normalized_result.graph.
Per la tua app, usa lo stesso comando con la sua directory o il percorso ASAR. Un agente può seguire una stringa letterale, un nome API o un canale IPC con gli strumenti di tracciamento delle funzionalità di REA.
Ispezionare il writer CSV
Seguire
notes:exportal suo gestore. Quali input raggiungono il writer CSV e cosa succede se la scrittura del file non riesce?
Utilizzare le posizioni di origine per ispezionare tali dettagli. I nomi dei canali calcolati e i gestori ambigui possono rimanere irrisolti; le osservazioni di runtime offrono un altro modo per analizzarli.
- Segui il ponte degli appunti di Notion Applica lo stesso approccio a un'app Electron pacchettizzata.
- Osservare un'esportazione del browserCattura un vero clic e vedi quale richiesta fa.
- Seguire una funzione nativaContinua in un binario quando una funzione dipende dal codice nativo.