Electron-forge执行npm run make提示主入口文件不存在如何解决
问题根因
你启用了@electron-forge/plugin-webpack插件,该插件会自动将主进程、渲染进程代码单独编译打包到.webpack目录下,而你当前package.json的main字段指向的是源码路径./src/main.js,和webpack插件的打包输出逻辑冲突,导致Forge打包时找不到编译后的入口文件。你手动修改common.js源码的操作破坏了Forge默认的文件复制逻辑,才会出现resources/app目录为空的问题。
解决步骤
- 第一步:撤销你对
common.js文件的所有修改,直接修改第三方依赖源码不属于合规解决方案,会导致后续打包逻辑异常。 - 第二步:修改
package.json的main字段值,将原来的"./src/main.js"替换为"./.webpack/main/index.js",这是@electron-forge/plugin-webpack主进程代码的默认输出路径。 - 第三步:检查你的
webpack.main.config.js配置,确认entry字段正确指向./src/main.js,output字段的输出路径和文件名和上一步配置的main路径匹配,没有自定义过webpack配置的话默认就符合要求。 - 第四步:删除项目根目录下的
out、.webpack缓存目录,重新执行npm run make即可正常打包。
异常排查
如果按上述步骤操作后仍有问题,可依次检查以下项:
- 执行
npm run package查看编译过程,确认.webpack/main目录下成功生成了index.js文件,未生成则说明你的主进程webpack配置存在语法错误,可查看控制台的webpack编译报错信息修复。 - 检查项目根目录下的
.gitignore、.forgeignore文件,确认没有规则忽略.webpack目录或.js后缀文件,Forge打包时会自动读取这两个文件的忽略规则。 - 如果你需要把源码中的静态资源、配置文件等非编译类文件打包到最终的app目录下,需要在
forge配置的packagerConfig中添加extraResources规则指定要复制的文件/目录,webpack插件默认只会把编译后的代码文件打包进去。
内容的提问来源于stack exchange,提问作者TuftedDuckDebugger
相关产品推荐
相关产品推荐

