这个报错意味着在 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

Electron-Egg 项目报错: contextBridge API 只能在启用 contextIsolation 时使用

原文地址: http://www.cveoy.top/t/topic/hn0N 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录