【问题标题】:How to enable context isolation in Electron.js + Next.js (Nextron)如何在 Electron.js + Next.js (Nextron) 中启用上下文隔离
【发布时间】:2023-02-03 23:08:37
【问题描述】:

我正在使用 Nextron (Electron.js + Next.js) 开发桌面应用程序。

我尝试使用以下方法启用与 BrowserWindow 参数的上下文隔离:

contextIsolation: true

但似乎不能直接工作,因为它会产生以下错误:

Uncaught ReferenceError: global is not defined
    at react-refresh.js?ts=1670419316858:10:1

Uncaught ReferenceError: global is not defined
    at webpack.js?ts=1670419316858:712:12
    at webpack.js?ts=1670419316858:1209:13
    at webpack.js?ts=1670419316858:1220:12

Uncaught ReferenceError: global is not defined
    at main.js?ts=1670419316858:9:1

Uncaught ReferenceError: global is not defined
    at _app.js?ts=1670419316858:9:1

Uncaught ReferenceError: global is not defined
    at login.js?ts=1670419316858:9:1

Nextron 版本为:8.2.0,Electron 版本为:20.1.0

有没有人遇到过这个问题并解决了它?在 Nextron 应用程序中启用上下文隔离的过程是什么?

谢谢。

【问题讨论】:

  • 可能与启用上下文隔离时节点被禁用的事实有关。见here

标签: javascript node.js electron desktop-application next


【解决方案1】:

不要使用上下文隔离(我同意 Electron 团队对此的基本原理,如果您曾经计划加载第 3 方网站,甚至是您自己运行第 3 方 javascript 的网站,因为它们可以访问您的 IPC 调用)。但是,如果您将该应用程序视为安全应用程序并且从不加载第三方网站或脚本,则可以关闭它。

如果你还想继续,修改next.config.js:

if (!isServer) {
  config.target = 'electron-renderer';
  config.node = {
    __dirname: true,
  };
}

config.output.globalObject = 'this';

【讨论】:

    猜你喜欢
    • 2019-06-25
    • 1970-01-01
    • 2020-06-14
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    相关资源
    最近更新 更多