Symfony5部署资产构建失败:webpack Encore/Ux报encore命令未找到
Symfony 5 Webpack Encore 生产构建报错解决
以下是针对你遇到的「sh: encore: command not found」报错及资产未编译问题的排查步骤:
1. 确保依赖完整安装
开发环境正常但生产构建失败,通常是因为生产环境未安装全依赖。先清理现有依赖重新安装:
rm -rf node_modules package-lock.json npm install
如果部署时默认只安装生产依赖,需要加上--production=false确保开发依赖(包括encore)被安装:
npm install --production=false
2. 修改build脚本为本地encore路径
全局未安装encore时,直接调用encore会找不到,修改package.json中的build脚本,改用项目本地的encore执行文件:
"build": "./node_modules/.bin/encore production --progress"
或者用npx自动调用本地包:
"build": "npx encore production --progress"
3. 确认Symfony Encore已安装
检查项目是否已安装@symfony/webpack-encore:
npm list @symfony/webpack-encore
如果显示未安装,执行安装命令:
npm install @symfony/webpack-encore --save-dev
4. 检查部署环境的NODE_ENV设置
如果部署工具(如Deployer、Capistrano)设置了NODE_ENV=production,可能会跳过开发依赖安装。需调整部署流程,确保在构建前安装所有依赖,或单独安装dev依赖用于构建。
5. 手动验证encore可执行性
在服务器的项目目录下,先手动执行:
./node_modules/.bin/encore --version
如果能正常输出版本号,再运行npm run build,确认构建是否正常。
内容的提问来源于stack exchange,提问作者21t0r01
相关产品推荐
相关产品推荐

