Udvikling af desktopapps med Electron · Lektion

Crashrapportering

Opsæt crashrapportering, der automatisk indsamler og sender crashlogs, så De kan identificere og løse kritiske problemer i Deres applikation.

Lektion 3 af 411 trin

Crashrapportering er en gratis Udvikling af desktopapps med Electron-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Udvikling af desktopapps med Electron, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Udvikling af desktopapps med Electron-kurset indeholder 4 lektioner i alt.

Hvorfor er fejlrapporter vigtige?

Har du nogensinde oplevet, at et program pludselig lukker uden varsel? Det er et nedbrud! Fejlrapportering er et vigtigt værktøj, der automatisk indsamler oplysninger om disse uventede fejl.

Disse data hjælper udviklere med at forstå, hvad der gik galt, rette fejl og forbedre programmernes stabilitet og pålidelighed. Det fungerer som en sort boks for dit program!

Electrons indbyggede værktøj

Electron leveres med det effektive, indbyggede modul crashReporter. Dette modul overvåger dit program for nedbrud og sender en rapport til en angivet server, når et nedbrud opstår.

Det fungerer både for hovedprocessen (Node.js) og renderer-processer (webindhold), så overvågningen bliver omfattende.

Start af fejlrapporteringen

For at aktivere fejlrapportering skal du initialisere den i din hovedproces så tidligt som muligt, typisk før der oprettes vinduer. Sådan gør du:

const { app, crashReporter, BrowserWindow } = require('electron');

// IMPORTANT: Call crashReporter.start() as early as possible
crashReporter.start({
  productName: 'MyElectronApp',
  companyName: 'MyCompany',
  submitURL: 'http://localhost:1127/post', // Replace with your actual crash server URL
  uploadToServer: true,
});

app.whenReady().then(() => {
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
  });
  mainWindow.loadFile('index.html');
});

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

app.on('activate', () => {
  if (BrowserWindow.getAllWindows().length === 0) {
    // In macOS, usually re-create a window in the app when the dock icon is clicked
    // For this example, we'll just ensure the app doesn't quit on macOS by default
  }
});

Konfiguration af dine rapporter

Når du kalder crashReporter.start(), angiver du flere vigtige indstillinger:

  • productName: Navnet på dit program.
  • companyName: Navnet på din virksomhed.
  • submitURL: Dette er den vigtigste indstilling! Det er URL'en til det server-slutpunkt, der modtager dine fejlrapporter.
  • uploadToServer: Sæt den til true for automatisk at sende rapporter.

Uden en gyldig submitURL, der peger på en server, som kan modtage disse rapporter, bliver de ikke sendt nogen steder hen!

Simulering af nedbrud i hovedprocessen

Du kan med vilje få hovedprocessen til at gå ned for at teste din opsætning. Metoden process.crash() afslutter processen med det samme og udløser fejlrapporteringen.

Husk, at dette er til test! I et rigtigt program er nedbrud som regel uventede. Fejlrapporteringen sender en rapport, selv hvis programmet fryser fuldstændigt.

const { app, crashReporter, BrowserWindow } = require('electron');

crashReporter.start({
  productName: 'MyElectronApp',
  companyName: 'MyCompany',
  submitURL: 'http://localhost:1127/post',
  uploadToServer: true,
});

app.whenReady().then(() => {
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
  });
  mainWindow.loadFile('index.html');

  // Simulate a crash after 5 seconds for testing
  setTimeout(() => {
    console.log('Simulating main process crash...');
    process.crash(); // This will crash the app!
  }, 5000);
});

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

app.on('activate', () => {
  if (BrowserWindow.getAllWindows().length === 0) {
    // In macOS, usually re-create a window in the app when the dock icon is clicked
  }
});

Håndtering af nedbrud i renderer-processer

crashReporter overvåger også dine renderer-processer. Hvis en renderer-proces går ned (f.eks. på grund af en JavaScript-fejl eller et problem i et indbygget modul i webindholdet), registrerer Electron det.

Hovedprocessen forsøger derefter at sende en fejlrapport på samme måde som ved et nedbrud i hovedprocessen. Du kan lytte efter hændelsen 'render-process-gone' på et BrowserWindow for at registrere nedbrud i renderer-processer.

Tilføjelse af ekstra kontekst

Fejlrapporter er mere nyttige, når de indeholder kontekst! Du kan føje brugerdefinerede nøgleværdi-par til dine fejlrapporter ved hjælp af crashReporter.addExtraParameter().

Det giver dig mulighed for at medtage oplysninger som brugerens id, programmets aktuelle tilstand eller bestemte funktionsflag, hvilket kan være uvurderligt ved fejlfinding.

const { app, crashReporter, BrowserWindow } = require('electron');

crashReporter.start({
  productName: 'MyElectronApp',
  companyName: 'MyCompany',
  submitURL: 'http://localhost:1127/post',
  uploadToServer: true,
});

// Add extra parameters BEFORE a crash occurs
crashReporter.addExtraParameter('userId', 'user123');
crashReporter.addExtraParameter('appState', 'editing_document');

app.whenReady().then(() => {
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
  });
  mainWindow.loadFile('index.html');

  // Simulate a crash for demonstration
  setTimeout(() => {
    console.log('Simulating crash with extra data...');
    process.crash();
  }, 5000);
});

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

app.on('activate', () => {
  if (BrowserWindow.getAllWindows().length === 0) {
    // In macOS, usually re-create a window in the app when the dock icon is clicked
  }
});

Modtagelse af fejlrapporter

Når Electron sender en fejlrapport, skal den modtages af en server. Denne server gemmer typisk rapporten og kan eventuelt behandle den yderligere, måske endda symbolisere staksporene.

Du kan opsætte dit eget enkle HTTP-slutpunkt eller bruge en specialiseret tjeneste til fejlrapportering som Sentry, Bugsnag eller Crashlytics, der tilbyder omfattende oversigter og analyser.

Bedste praksis og privatliv

Husk følgende, når du implementerer fejlrapportering:

  • Privatliv: Pas på ikke at sende følsomme brugerdata i fejlrapporter.
  • Samtykke: Informer brugerne om, at fejlrapporter sendes, og giv dem om muligt mulighed for at fravælge det.
  • Test: Test altid din opsætning af fejlrapportering grundigt for at sikre, at rapporter sendes og modtages korrekt.
  • Symbolisering: Ved indbyggede nedbrud skal du symbolisere rapporterne for at få menneskeligt læsbare stakspor.

Quiz om fejlrapportering

Test din forståelse af Electrons fejlrapportering.

Opsummering og det næste trin

I denne lektion har du lært at opsætte fejlrapportering i dit Electron-program. Vi gennemgik initialisering af crashReporter, konfiguration af indstillinger, simulering af nedbrud og tilføjelse af ekstra data til rapporter.

Implementering af fejlrapportering er et vigtigt skridt mod at bygge robuste og pålidelige skrivebordsprogrammer. Overvej derefter at udforske specifikke tjenester til fejlrapportering, så du kan administrere og analysere dine indsamlede data mere effektivt!

Gratis at komme i gang

Lær JavaScript med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
47

Ofte stillede spørgsmål

Er lektionen “Crashrapportering” gratis?

Ja — hele teksten til “Crashrapportering” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Udvikling af desktopapps med Electron-kurset, skal du opgradere til CoddyKit PRO. Udvikling af desktopapps med Electron-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Crashrapportering”?

Opsæt crashrapportering, der automatisk indsamler og sender crashlogs, så De kan identificere og løse kritiske problemer i Deres applikation. Du øver dig i Udvikling af desktopapps med Electron med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Udvikling af desktopapps med Electron?

Der kræves ingen tidligere erfaring. Udvikling af desktopapps med Electron på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Crashrapportering”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Udvikling af desktopapps med Electron-lektion?

Ja. Alle Udvikling af desktopapps med Electron-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Håndtering af hændelser i appens livscyklus
  2. Implementering af automatiske opdateringer
  3. Crashrapportering
  4. Deep linking og protokolhåndterere
← Tilbage til Udvikling af desktopapps med Electron