如何在Electron.js + Next.js (Nextron)中启用上下文隔离



我正在使用Nextron (electronic .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应用程序中启用上下文隔离的过程是什么?

谢谢。

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

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

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