[英]Assets not found in prod using Webpack Encore with Symfony3.4
我基于Symfony 3.4开发了一个网站,并使用Webpack Encore来管理资产。 当我部署上一个版本时,找不到CSS / JS资产:
当我检查网页的源代码时,我看到URL指向资产的旧版本,例如/build/app.db32012d.css
而manifest.json
文件引用资产的新版本:
{
"build/app.css": "/build/app.2aba4862.css"
}
我使用部署程序来部署新版本。 部署过程通过运行yarn encore prod
构建资产。
首先,我试图预热/清除Symfony缓存,但是仍然卡住了。
当我在开发环境中浏览该站点(调用app_dev.php
)时,问题app_dev.php
了。
我试图重新启动Apache,但仍然卡住了。
我将VirtualHost的DocumentRoot
从/var/www/current/web
更改为/var/www/foo/web
,该问题消失了,直到下一个版本。
这是我的堆栈:
我希望资产URL指向manifest.json
文件中指定的新版本。
我怀疑某个地方存在缓存问题,但是找不到。
我想我找到了答案。 使用功能encore_entry_link_tags
和encore_entry_script_tags
( 官方文档 )将版本化的资产加载到Twig模板中。 这些函数从Encore生成的entrypoints.json
文件中读取信息,以了解要渲染的确切文件名。 在其背后的只是PHP。 当我使用php-fpm时,我必须在部署资产的新版本时重新启动服务php-fpm:
service php7.3-fpm restart
而已!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.