electron Errors

20 error patterns

electron3 fixes

Electron IPC communication failure

Error invoking remote|ipcRenderer.*undefined|ipcMain.*no handler

  • Expose IPC methods via preload script using contextBridge.exposeInMainWorld()
  • Register ipcMain.handle() in main process before renderer sends invoke()
electron3 fixes

Electron operation on destroyed window

BrowserWindow.*destroyed|Cannot.*call.*method.*destroyed.*window

  • Check win.isDestroyed() before calling methods on the window
  • Remove event listeners that reference the window in the 'closed' event
electron3 fixes

Electron native module build/compatibility error

native module.*not found|prebuild.*error|node-gyp.*failed|NODE_MODULE_VERSION.*mismatch

  • Rebuild native modules for Electron's Node version: electron-rebuild
  • Use @electron/rebuild or postinstall script: electron-rebuild -f
electron3 fixes

Electron auto-update failure

autoUpdater.*error|Update.*check.*failed|ENOENT.*app-update\.yml

  • Ensure app-update.yml is included in build output (electron-builder config)
  • Check that update server URL is accessible and returns valid release info
electron3 fixes

Electron ASAR archive file access error

ASAR.*not found|Cannot read.*asar|ENOTDIR.*\.asar

  • Use path.join(process.resourcesPath, ...) for files outside the ASAR
  • Add files to asarUnpack in electron-builder config for native access
electron3 fixes

Electron packaging/distribution build failure

Packaging.*error|electron-builder.*failed|NSIS.*error|DMG.*creation.*failed

  • Check electron-builder config in package.json for valid target configuration
  • For NSIS errors on Windows, ensure NSIS is accessible or use portable target
electron3 fixes

Electron security configuration error

contextIsolation.*security|nodeIntegration.*deprecated|sandbox.*violation

  • Set contextIsolation: true and nodeIntegration: false (secure defaults)
  • Use preload scripts with contextBridge to safely expose APIs to renderer
electron3 fixes

Electron screen/display API error

screen.*not available|Display.*error|cannot get.*primary display

  • Access screen module only after app 'ready' event fires
  • Import screen from electron in main process only: const { screen } = require('electron')
electron3 fixes

Electron session/webRequest error

session.*cookie.*error|webRequest.*interceptor.*failed

  • Access session from mainWindow.webContents.session, not before window creation
  • Register webRequest interceptors after session is created and before navigation
electron3 fixes

Electron Menu template error

Menu.*error|MenuItem.*accelerator.*invalid|template.*not valid

  • Validate menu template structure: { label, submenu, click, accelerator }
  • Use role shortcuts for standard items: 'copy', 'paste', 'quit'
electron3 fixes

Electron custom protocol registration error

protocol.*register.*failed|custom protocol.*not allowed|registerFileProtocol

  • Register protocols before app 'ready' event using protocol.registerSchemesAsPrivileged()
  • Use protocol.handle() (Electron 25+) instead of deprecated registerFileProtocol
electron3 fixes

Electron Tray/Notification system error

Tray.*destroyed|nativeImage.*empty|notification.*not supported

  • Keep tray variable reference at module level to prevent garbage collection
  • Use nativeImage.createFromPath() with absolute path to icon file
electron3 fixes

Electron renderer process crash

crashed.*renderer|renderer.*process.*gone|child process.*exited

  • Listen for 'render-process-gone' event and offer to reload the window
  • Check renderer memory usage — large datasets may cause OOM crashes
electron3 fixes

Electron dialog used in wrong process

dialog.*not.*main.*process|showOpenDialog.*undefined|cannot use.*dialog.*renderer

  • Use dialog module in main process only, invoke via IPC from renderer
  • Call dialog.showOpenDialog(mainWindow, options) from an ipcMain handler
electron3 fixes

Electron power monitor error

powerMonitor.*not available|idle.*detection.*error|suspend.*resume.*event

  • Access powerMonitor only after app 'ready' event
  • Use powerMonitor.getSystemIdleTime() for idle detection (returns seconds)
electron3 fixes

Electron SSL certificate verification error

Unable to verify.*first certificate|net::ERR_CERT|certificate.*error.*electron

  • Handle 'certificate-error' event on the app to allow specific certs in dev
  • Install proper CA certificates in the system trust store
electron3 fixes

Electron deep link / custom URL scheme not working

deep link.*not registered|protocol.*handler.*missing|open-url.*event

  • Register protocol handler in electron-builder config: protocols.schemes
  • Call app.setAsDefaultProtocolClient('myapp') at startup
electron3 fixes

Electron webContents navigation failure

webContents.*navigation.*blocked|did-fail-load|ERR_ABORTED

  • Listen for 'did-fail-load' event to handle navigation errors gracefully
  • Check will-navigate event isn't blocking the navigation
electron3 fixes

Electron safeStorage/keychain error

safeStorage.*not available|encryptString.*error|keychain.*access

  • Check safeStorage.isEncryptionAvailable() before using encrypt/decrypt
  • On Linux, ensure a keyring service (gnome-keyring, kwallet) is available
electron3 fixes

Electron clipboard/image operation error

clipboard.*error|nativeImage.*format.*unsupported|writeImage.*failed

  • Check nativeImage is not empty before writing to clipboard
  • Use supported formats: PNG for images, UTF-8 text, HTML for rich text