Symfony 4 и webpack упаковываются в производственную среду, мои css и js сгенерированные файлы не загружаются - PullRequest
0 голосов
/ 30 января 2019

Я хочу развернуть мой сайт 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, ...)

Я также вижу файл manifest.json в каталоге public/build, его содержимое:

{
  "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 с разрешением на чтение / запись)

OfКонечно, в моем файле шаблона ветки я генерирую пути к тезисам с помощью функции «asset»:

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

Где моя ошибка?

1 Ответ

0 голосов
/ 04 февраля 2019

Я собираюсь рассказать по порядку.Изначально вам нужно установить этот пакет.

composer require asset

Далее вы увидите asset.yaml в `config / packages / asset.yaml``

Вставьте эти строки,

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

Кстати, убедитесь, что вы используете функцию asset в Twig для включения ваших файлов активов, например так:

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

...