【发布时间】:2021-03-19 06:32:14
【问题描述】:
在渲染过程中使用new BrowserWindow 语句时,会引发以下异常:TypeError: BrowserWindow is not a constructor。
如何从渲染进程创建新的模态 BrowserWindow?
【问题讨论】:
标签: electron
在渲染过程中使用new BrowserWindow 语句时,会引发以下异常:TypeError: BrowserWindow is not a constructor。
如何从渲染进程创建新的模态 BrowserWindow?
【问题讨论】:
标签: electron
您不能在渲染器进程中使用BrowserWindow。仅在主进程中:
见https://www.electronjs.org/docs/api/browser-window#browserwindow
两个进程必须通过通道进行通信:
// main process
const {app, BrowserWindow, ipcMain} = require('electron')
app.whenReady().then(function () {
const mainWindow = new BrowserWindow({ webPreferences: { nodeIntegration: true } });
mainWindow.loadFile('index.html');
});
ipcMain.on('go!', (ev, url) => {
// ^^^^^
// A channel called "go!"
new BrowserWindow().loadURL(url);
});
// renderer process
const {ipcRenderer} = require('electron');
document.querySelector('button').addEventListener('click', function () {
ipcRenderer.send('go!', 'https://www.discogs.com/artist/7760-Japanese-Telecom');
});
<html>
<body>
<button>detroit techno</button>
<script>require('./renderer.js')</script>
</body>
</html>
当你点击“detroit techno”按钮时(你应该这样做!):
【讨论】:
BrowserWindow API,那么可以。
nodeIntegration=true来启用进程之间的IPC通信。见stackoverflow.com/q/69605882/1244884