Symfony项目推送Heroku失败提示WebpackEncoreBundle类未找到如何解决
问题原因
- 依赖安装规则不匹配:
symfony/webpack-encore-bundle被放在composer.json的require-dev区块中,Heroku 部署生产环境时默认执行composer install --no-dev,会跳过所有开发依赖的安装,生产环境不存在该包的代码文件。 - Bundle 加载规则冲突:你在
config/bundles.php中配置 WebpackEncoreBundle 的启用规则为['all' => true],要求所有环境(包括生产环境)都加载该 Bundle,生产环境找不到对应类就会触发致命错误,导致缓存清理失败。
解决方案
根据你的生产环境使用需求选择任意一种即可:
方案1:生产环境需要使用 WebpackEncoreBundle
将该依赖从开发依赖移动到生产依赖:
- 本地执行命令
composer require symfony/webpack-encore-bundle - 提交更新后的
composer.json和composer.lock文件,重新推送至 Heroku 部署即可。
方案2:生产环境不需要使用 WebpackEncoreBundle
修改config/bundles.php中 WebpackEncoreBundle 的加载规则,仅在开发/测试环境启用:
Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['dev' => true, 'test' => true],
提交修改后的文件重新部署即可。
额外注意项
确保你每次修改composer.json后都同步提交了composer.lock文件,Heroku 部署时优先读取composer.lock的依赖版本信息,未同步提交会导致依赖安装不符合预期。
内容的提问来源于stack exchange,提问作者Pax
相关产品推荐
相关产品推荐

