Symfony添加CSS时提示Command "encore" not found如何解决
问题原因与解决步骤
根因说明
- WebpackEncoreBundle的recipe未自动安装不属于文档或程序bug,常见触发原因是:
composer全局配置中extra.symfony.auto-accept-recipes设为了false,或是项目symfony.lock中已存在该扩展的旧版recipe记录,导致Flex跳过了自动执行流程。 encore命令不存在、依赖包安装失败的核心原因是跨环境执行命令的流程遗漏,以及依赖安装顺序错误:- recipe生成的
package.json中已经内置了@symfony/webpack-encore、@symfony/stimulus-bridge等所有必要依赖,你没有先执行依赖安装命令就直接执行yarn encore dev,自然找不到对应的可执行文件 - 若你宿主机的npm镜像源配置不全,会导致scope包
@symfony/stimulus-bridge拉取失败,和程序本身无关
- recipe生成的
具体修复流程
- 先确认docker容器与宿主机的项目文件完全同步,删除当前项目下的
node_modules目录、package.json、yarn.lock文件,避免旧配置干扰 - 在php容器内重新执行recipe安装确保配置文件正确:
docker-compose exec php composer recipes:install symfony/webpack-encore-bundle --force -v - 回到项目根目录(宿主机或装了node环境的容器内均可,需保证执行环境的
node >= 16、yarn >= 1.22),先执行完整依赖安装:
如果仍提示yarn install@symfony/stimulus-bridge找不到,临时切换官方npm源再执行安装:yarn config set registry https://registry.npmjs.org yarn install - 依赖安装完成后再执行encore编译命令即可正常运行:
yarn encore dev
额外优化建议
如果不想跨环境处理前端依赖,建议直接在docker-compose中新增node服务,所有前端命令都在node容器内执行,避免宿主机和容器环境差异导致的各类兼容性问题。
内容的提问来源于stack exchange,提问作者Darius.V
相关产品推荐
相关产品推荐

