繁体   English   中英

使用Webpack Encore和Symfony3.4在产品中找不到资产

[英]Assets not found in prod using Webpack Encore with Symfony3.4

我基于Symfony 3.4开发了一个网站,并使用Webpack Encore来管理资产。 当我部署上一个版本时,找不到CSS / JS资产:

在此处输入图片说明

当我检查网页的源代码时,我看到URL指向资产的旧版本,例如/build/app.db32012d.cssmanifest.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 ,该问题消失了,直到下一个版本。

这是我的堆栈:

  • 阿帕奇2.4
  • php7.3.6-fpm
  • 启用OPCache
  • 启用HTTP2

我希望资产URL指向manifest.json文件中指定的新版本。

我怀疑某个地方存在缓存问题,但是找不到。

我想我找到了答案。 使用功能encore_entry_link_tagsencore_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM