Electron-Egg 项目报错: contextBridge API 只能在启用 contextIsolation 时使用
这个报错意味着在 Electron 项目中使用了 contextBridge API,但是 contextIsolation 没有启用。contextBridge API 是为了增强安全性,可以防止渲染进程直接访问主进程的 API。
要解决这个问题,你需要在创建 BrowserWindow 实例时启用 contextIsolation。例如:
const { app, BrowserWindow } = require('electron')
app.whenReady().then(() => {
const mainWindow = new BrowserWindow({
webPreferences: {
contextIsolation: true, // 启用 contextIsolation
preload: path.join(__dirname, 'preload.js')
}
})
// 加载你的页面
mainWindow.loadFile('index.html')
})
在上面的代码中,我们将 contextIsolation 设置为 true,并指定了一个 preload 脚本(preload.js)来创建一个安全的桥接。你可以在 preload.js 中添加 contextBridge API 来暴露主进程的 API 给渲染进程。例如:
const { contextBridge, ipcRenderer } = require('electron')
contextBridge.exposeInMainWorld('api', {
// 你的主进程 API 方法
sendToMain: (message) => {
ipcRenderer.send('message', message)
}
})
通过上述设置和代码,你就可以在渲染进程中使用 window.api.sendToMain 方法来调用主进程的 ipcRenderer.send 方法了。
注意:contextIsolation 默认是禁用的,启用后可能需要进行一些额外的调整来确保你的应用程序正常工作。详细的信息可以参考 Electron 文档中关于 contextIsolation 的说明:https://www.electronjs.org/docs/tutorial/context-isolation
原文地址: http://www.cveoy.top/t/topic/hn0N 著作权归作者所有。请勿转载和采集!