Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ipcRenderer.on is not a function

Tags:

electron

I am using the MainPreloadRenderer process stack.

preload.js

const { contextBridge, ipcRenderer } = require('electron')
contextBridge.exposeInMainWorld('ipcRenderer', ipcRenderer)

renderer.js

console.log(ipcRenderer) // it shows something like:
/**
{_events: {…}, _eventsCount: 0, _maxListeners: undefined, send: ƒ, sendSync: ƒ, …}
invoke: ƒ ()
postMessage: ƒ ()
send: ƒ ()
sendSync: ƒ ()
sendTo: ƒ ()
sendToHost: ƒ ()
Symbol(kCapture): false
_events: {}
_eventsCount: 0
_maxListeners: undefined
__proto__: Object
**/

console.log(ipcRenderer.on) // undefined

When trying to use the ipcRenderer.on() method, it is logging an error:

Uncaught TypeError: ipcRenderer.on is not a function

Was this method been removed in the newer versions? What is causing it to be not available on the renderer process?

like image 709
Abel Callejo Avatar asked Jun 16 '26 00:06

Abel Callejo


1 Answers

Here's a little workaround for that. Yet i don't think this is a good idea for security.

const { contextBridge, ipcRenderer } = require("electron");    
contextBridge.exposeInMainWorld("electron", { ipcRenderer: { ...ipcRenderer, on: ipcRenderer.on } });
like image 107
Jonas Both Avatar answered Jun 23 '26 18:06

Jonas Both



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!