即使使用推荐的设置,电子功能也无法从 renderer/preload 脚本中访问

Electron functions are inaccessible from within renderer/preload scripts even with recommended settings

我花了好几天时间阅读票证和文档,试图找到解决这个问题的方法,但没有任何建议奏效。这似乎是一个重大疏忽,或者我完全是个傻瓜。

简单地说,我想做的是从应用程序内部访问电子 api,例如我想要一个按钮,可以单击它来关闭、调整大小等。 window 通过render/preload 脚本中的 BrowserWindow 对象。

我正在通过 electron forge w/webpack 编译它,来自 electron forge 提供的示例回购(而不是单独的 webpack),我有 nodeIntegration: truecontextIsolation: falseenableRemoteModule: truepackage.json 也设置了这些选项。

这是我使用的起始项目: https://www.electronforge.io/config/plugins/webpack

通过阅读其他票证,通常推荐的方法是通过各种方法要求 remote 模块,获取 window 对象并关闭/执行您的操作。使用时总是 returns null 的问题:

我已经尝试了各种来源,但例如这张票中的任何内容都不起作用:

我还阅读了这篇文章,似乎说 remote 模块已被弃用并且不再使用,但是其中的代码也不起作用:https://www.npmjs.com/package/@electron/remote

我已经使用我尝试使用的代码创建了一个 git 存储库: https://github.com/MajorFailz/electron-problem-example

请帮忙!如果我不能从应用程序内部控制应用程序,我就不能真正继续使用电子开发我的项目。如果我不知何故愚蠢并错过了一些重要或基本的东西,我非常乐意接受,但正如我所说,感觉这些是任何电子新手都需要知道的第一件事,但我迷路了 =/

如果你能给我提供一个我可以看的它工作的可证明的例子,加分。

提前致谢!

编辑:包中的版本

    "@electron-forge/cli": "^6.0.0-beta.61",
    "@electron-forge/maker-deb": "^6.0.0-beta.61",
    "@electron-forge/maker-rpm": "^6.0.0-beta.61",
    "@electron-forge/maker-squirrel": "^6.0.0-beta.61",
    "@electron-forge/maker-zip": "^6.0.0-beta.61",
    "@electron-forge/plugin-webpack": "^6.0.0-beta.61",
    "@vercel/webpack-asset-relocator-loader": "^1.7.0",
    "css-loader": "^6.5.1",
    "electron": "16.0.4",
    "node-loader": "^2.0.0",
    "style-loader": "^3.3.1"
  },
  "dependencies": {
    "electron-squirrel-startup": "^1.0.0"
  }```

感谢@evolutionxbox 的评论,我设法通过以下方法解决了这个问题。

npm run install --save @electron/remote

然后在 main.js 中添加以下行: require('@electron/remote/main').initialize()

然后最后在主进程中创建 window 时添加: require("@electron/remote/main").enable(mainWindow.webContents)

现在我在请求 BrowserWindow 对象时得到了它!呜呜呜!