Electron 15.1.0启动调用app.whenReady/on('ready')报未捕获类型错误如何解决?
问题根因
报错的核心原因是错误将Electron主进程代码放在渲染进程中执行:
src/index.js是Electron主进程入口文件,已在package.json的main字段声明,仅能在主进程的Node.js环境运行- 你在
index.html中通过<script type="module" src="index.js">引入了主进程代码,渲染进程为浏览器环境,不存在只有主进程才有的app对象,调用app相关API自然会抛出未定义错误。
解决方法
- 删除
index.html中的以下代码即可解决报错:
<script type="module" src="index.js"> </script>
- 如果需要编写渲染进程逻辑,单独新建渲染进程专用的JS文件(如
renderer.js),再在index.html中引入该新文件即可,不要直接复用主进程的index.js。
额外提示
你之前遇到的require is not defined问题,虽然通过关闭contextIsolation临时解决,但该配置存在安全风险,Electron官方不推荐生产环境设置nodeIntegration: true和关闭contextIsolation,如果需要在渲染进程调用Node.js能力,建议通过preload脚本结合IPC通信实现。
内容的提问来源于stack exchange,提问作者H1e6X
相关产品推荐
相关产品推荐

