【问题标题】:Symfony 4 & webpack encore in production env, my css and js generated files aren't loadedSymfony 4 & webpack encore 在生产环境中,我的 css 和 js 生成的文件没有加载
【发布时间】:2019-06-23 12:29:00
【问题描述】:

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

然后,我可以看到我的公共目录中有生成的文件(例如文件:public/build/css/global.9e04a9d9.css、public/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.css 和 global.js 不是 global.9e04a9d9.css 和 global.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>

我的错误在哪里?

【问题讨论】:

    标签: symfony assets symfony4 production webpack-encore


    【解决方案1】:

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

    composer require asset

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

    插入这些行,

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

    顺便说一句,请确保您在 Twig 中使用 asset 函数来包含您的资产文件,如下所示;

    &lt;script src="{{ asset('build/app.js') }}"&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-24
      • 2015-03-06
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      相关资源
      最近更新 更多