javascript - 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
解决方案
mainWindow = new BrowserWindow({
width: 1280,
height: 960,
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
},
});
我相信你正在使用新版本的 Electron。从 v9 版本开始,我们不允许remote
在渲染器上使用,除非设置enableRemoteModule
为 true。
另外,为了使用 加载node_moduels
渲染器require()
,我们还需要启用nodeIntegration
。需要的是节点 API 之一。
推荐阅读
- ruby - 是否可以在 Ruby gem 中需要单个文件而不是主 gem 入口点?
- php - if语句检查字符串是否为问号
- node.js - 我正在尝试使用其他输入字段在我的 nodejs 应用程序中上传文件,但没有这样做
- r - 在 R 中使用 lapply 时自定义函数返回错误
- javascript - 清除以前的 setInterval 并在单击提交按钮 React.js 时开始新的 Interval
- dns - 如何将 ibm 云应用程序配置到 Godaddy 域
- java - alertDialog中的Listview,将listview定位在我想要的地方就是我卡住的地方
- python - TypeError:预期的二进制或 unicode 字符串,得到项目错误
- javascript - 用于 Javascript 导入对象或函数的 Intellij 调试器控制台
- html - 当网站源中不存在时,R中的抓取表?