生产环境中的Symfony 4和Webpack Encore,我的CSS和JS生成的文件未加载

时间:2019-01-30 09:12:48

标签: symfony assets symfony4 production webpack-encore

我想在生产环境中部署我的Symfony 4网站。 我将变量APP_ENV设置为prod(在.env文件中),然后执行了以下命令:yarn build(= ./node_modules/.bin/encore production

然后,我可以看到我的公共目录中有生成的文件(例如:public/build/css/global.9e04a9d9.csspublic/build/js/global.399763b8.js,...的文件)

我还可以在public/build目录中看到manifest.json文件,其内容为:

{
  "myApp/public/build/js/global.js": "/myApp/public/build/js/global.399763b8.js",
  "myApp/public/build/css/global.css": "/myApp/public/build/css/global.9e04a9d9.css"
}

但是当我加载一个页面时,以为我的浏览器(firefox),css和js文件没有加载,我也不明白为什么。

通过示例,在浏览器调试器中,我收到以下“通知”消息:“源“ http://localhost/myApp/public/build/js/global.js的加载失败”。

当我浏览页面代码(通过firefox调试器)时,css和js的路径为:

<link rel="stylesheet" href="/myApp/public/build/css/global.css">
...
<script src="/myApp/public/build/js/global.js"></script>

问题出在这里:为什么global.cssglobal.js不是global.9e04a9d9.cssglobal.399763b8.js

  • 我使用bin/console cache:clear清除了缓存(我也尝试过使用bin/console cache:clear --env=prod
  • 我检查了var / cache和public / build目录(具有读写权限的www-data拥有的目录)的权限

当然,在我的模板树枝文件中,我使用函数“ asset”生成这些路径:

<link rel="stylesheet" href="{{ asset('build/css/global.css') }}">
...
<script src="{{ asset('build/js/global.js') }}"></script>

我的错误在哪里?

1 个答案:

答案 0 :(得分:0)

我要按顺序讲。最初,您需要安装此软件包。

composer require asset

此外,您会在`config / packages / asset.yaml``中看到asset.yaml

插入这些行,

framework: assets: json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'

顺便说一句,请确保使用Twig中的asset函数来包含资产文件,就像这样;

<script src="{{ asset('build/app.js') }}">