5

This is in Renderer Process:


const {BrowserWindow} = require('electron').remote

const path = require('path')
const url = require('url')

const newWindowButton = document.getElementById('new-window-btn');
newWindowButton.addEventListener('click',(e)=>{
    let win3 = new BrowserWindow();
    win3.loadURL(url.format({
        pathname: path.join(__dirname,'index3.html'),
        protocol: "file",
        slashes: true
    }))

})

I am not able to open a new window in renderer process, getting the below error.

**Uncaught TypeError: Cannot destructure property 'BrowserWindow' of 'require(...).remote' as it is

undefined.**
    at Object.<anonymous> (D:\ElectronTute\helloWorld\index1.js:4)
    at Object.<anonymous> (D:\ElectronTute\helloWorld\index1.js:21)
    at Module._compile (internal/modules/cjs/loader.js:1145)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js`enter code here`:1166)
    at Module.load (internal/modules/cjs/loader.js:981)
    at Module._load (internal/modules/cjs/loader.js:881)
    at Function.Module._load (electron/js2c/asar.js:769)
    at Module.require (internal/modules/cjs/loader.js:1023)
    at require (internal/modules/cjs/helpers.js:77)
    at index1.html:13
tpikachu
  • 4,478
  • 2
  • 17
  • 42
Devendra
  • 55
  • 1
  • 5
  • Does this answer your question? [Electron.remote is undefined](https://stackoverflow.com/questions/37884130/electron-remote-is-undefined) – snwflk Sep 15 '20 at 16:16
  • In particular the new answers (`enableRemoteModule`) – snwflk Sep 15 '20 at 16:17

1 Answers1

19
 mainWindow = new BrowserWindow({
    width: 1280,
    height: 960,
    webPreferences: {
      nodeIntegration: true,
      enableRemoteModule: true,
     },
  });

I believe you are using the new version of Electron. From the v9 version, we are not allowed to use remote on the renderer unless set the enableRemoteModule as true.

Plus, to load node_moduels on the renderer by using require(), we need to enable the nodeIntegration as well. As require is one of the node APIs.

https://github.com/electron/electron/issues/21408

For me, I'm exposing only necessary APIs via the preload script.

tpikachu
  • 4,478
  • 2
  • 17
  • 42