Electron Forge点击窗口关闭报错Cannot read property 'close' of undefined如何解决
错误修复方案
错误原因
该报错是@electron-forge/plugin-webpack旧版本的已知Bug:开发模式下点击窗口关闭程序时,exitHandler回调会尝试调用已经被销毁的devServer实例的close方法,此时server对象为undefined,因此抛出类型错误。该报错仅出现在npm run start开发环境下,不影响生产打包后的程序运行。
修复方案
方案1:升级插件版本(推荐)
官方已在后续版本修复该问题,直接升级@electron-forge/plugin-webpack到最新稳定版即可解决:
# npm npm install @electron-forge/plugin-webpack@latest --save-dev # yarn yarn add @electron-forge/plugin-webpack@latest --dev # pnpm pnpm add @electron-forge/plugin-webpack@latest -D
方案2:临时修复(适用于版本被锁死无法升级的场景)
临时调试用修改
直接修改node_modules内的源码:
- 打开路径
node_modules/@electron-forge/plugin-webpack/dist/WebpackPlugin.js - 找到exitHandler方法内的
server.close()代码,修改为if (server) server.close()或者使用可选链写法server?.close()即可。
该修改会在重新安装依赖后失效,仅适合临时调试使用。
永久补丁修复
使用patch-package将修改固化到项目中:
- 先安装patch-package:
npm install patch-package --save-dev - 按上述步骤修改源码后,执行命令:
npx patch-package @electron-forge/plugin-webpack - 在package.json的scripts中添加命令:
"postinstall": "patch-package"
后续每次安装依赖都会自动应用该补丁,无需重复修改源码。
内容的提问来源于stack exchange,提问作者Chris Webber
相关产品推荐
相关产品推荐

