首页 > 解决方案 > Electron JS - 无法解构'require(...).remote'的属性'BrowserWindow',因为它未定义

问题描述

这是在渲染器进程中:


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
    }))

})

我无法在渲染器进程中打开新窗口,出现以下错误。

**未捕获的类型错误:无法按原样解构“require(...).remote”的属性“BrowserWindow”

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

标签: javascriptnode.jselectron

解决方案


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

我相信你正在使用新版本的 Electron。从 v9 版本开始,我们不允许remote在渲染器上使用,除非设置enableRemoteModule为 true。

另外,为了使用 加载node_moduels渲染器require(),我们还需要启用nodeIntegration。需要的是节点 API 之一。

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


推荐阅读