Объединенные JS и CSS не работают в режиме производства

24

Я был в режиме разработчика , все было замечательно, когда я перешел в производственный режим , параметры слияния CSS и JS, похоже, игнорировались, он снова перечислял все css и js.

Также на странице товара отображаются только изображения товара в режиме разработчика, после перехода в рабочий режим они исчезают.

Любая мысль, чтобы помочь мне?


Дело в том, что я делаю это.

Вот что я сделал по порядку:

bin/magento setup:upgrade

bin/magento indexer:reindex

bin/magento setup:static-content:deploy

bin/magento setup:di:compile

bin/magento deploy:mode:set production

bin/magento setup:static-content:deploy

И даже до запуска, параметры слияния да, и я был в режиме разработчика.

BrunoBueno
источник
Здравствуйте, у вас есть какое-либо решение этой проблемы, у меня та же проблема в magento 2.0.7. Пожалуйста, дайте решение, если у вас есть, спасибо
Ашиш Джагнани
та же проблема, с которой я сталкиваюсь, пожалуйста, помогите мне
Р.В. Сингх

Ответы:

19

Я просто сделал следующее, и проблема была решена:

Настройка bin / magento: обновление

индексатор bin / magento: reindex

bin / magento deploy: mode: установить производство -s

# Здесь был секрет: запустите di: compile после производства
Настройка bin / magento: di: compile  

Настройка bin / magento: static-content: deploy
BrunoBueno
источник
2
Я пытался так же, но не повезло
Прадип Кумар
Это сработало для меня.
Дчайка
Если я выполняю команду «production -s», он очищает мой сайт и выдает очень необычную ошибку: Предупреждение: include (/ siteRoot / html / var / view_preprocessed / html / vendor / magento / module-theme / view / base / templates / root). phtml): не удалось открыть поток: нет такого файла или каталога в /siteRoot/html/vendor/magento/framework/View/Result/Page.php в строке 312
Jai
Другое - это сработало для меня. В случае, если у кого-то еще есть проблема, я был. CSS будет минимизироваться и объединяться, но JS не будет, несмотря на то, что опции включены в админке. Добавление -s в заданном режиме продукта полностью изменило ситуацию. Кроме того, серверная часть теперь намного быстрее. Я использовал тот же порядок и команды, но это было "-s", которое имело значение, Спасибо
dawhoo
Нужно ли мне сначала вернуться в режим разработки? Я сделал то, что вы упомянули, но без разницы ...
Джилко Тигчелаар
2

Убедитесь, что вы также проверили конфигурационный файл NGINX.

Если там есть переменная, $MAGE_MODEкоторую нужно изменить production, и сохраните файл

После этого вам нужно будет перезагрузить или перезапустить NGINX в зависимости от ваших предпочтений.

sudo service nginx reload

ИЛИ

sudo service nginx restart

После этого проверьте ваш app/etc/env.phpи посмотрите, установлен ли MAGE_MODEключ массива productionтакже, если не измените его, productionили вы можете использовать команду

php bin/magento deploy:mode:set production

После выполнения команды проверьте, изменилось ли значение app/etc/env.php, иногда могут возникнуть проблемы с разрешениями.

Далее почистите pub/staticпапку.

rm -rf pub/static/*

Очистить / очистить кэш

php bin/magento cache:clean
php bin/magento cache:flush 

Теперь вы готовы выполнить развертывание статического контента.

php bin/magento setup:static-content:deploy

Надеюсь это поможет.

Атиш Госвами
источник
1

У меня похожая проблема. Причина отсутствия изображения заключается в том, что в файле JS произошла ошибка после минимизации JS. Вы можете проверить это в своем браузере (firebug и т. Д.).

... / div> '; return __p};}) (окно, документ, местоположение, typeof jQuery! ==' undefined '&& jQu

Я решил это, удалив все файлы в var / cache /и pub / static / и setup: static-content: развернуть снова

Но есть еще одна проблема, это касается braintree, если вы включите его. Braintree не появляется из-за другой ошибки JS.

Ошибка: ошибка сценария для: https://js.braintreegateway.com/v2/braintree.js http://requirejs.org/docs/errors.html#scripterror

... Ошибка (id, msg, err, requireModules) {var e = new Error (msg + '\ nhttp: //requirejs.org/doc ...

Пока я просто не использую функцию minify js, чтобы избежать проблем, пока не найдено решение.


1

Это шаги, которые работали для меня на Magento ver. 2.1.7 с Redis (не работает Varnish). Однако до сих пор неясно, все ли работает как надо. JS минимизирован и связан (неясно, что должно делать слияние). CSS минимизирован (не видеть его слитым).

  1. Выключите весь кеш Magento.
  2. Очистить кэш Redis.
  3. Включите все пять конфигов css / js (либо в админке, либо через базу данных).
  4. Генерация статических файлов.
  5. Очистить кеш Magento (командная строка). В целях безопасности (может не потребоваться).
  6. Очистить opcache (если не установлено автоматическое обновление).
  7. Обновите домашнюю страницу внешнего интерфейса (и проверьте консоль браузера на наличие ошибок).
  8. Включите кеш Magento.

dev / css / merge_css_files = 1 dev / css / minify_files = 1 dev / js / enable_js_bundling = 1 dev / js / merge_files = 1 dev / js / minify_files = 1

Простое включение конфигов и очистка кеша не работали - консоль внешнего браузера сообщала о множестве ошибок js.


Объединить объединит ваши файлы в один.
ladle3000

0

Вы пытались очистить JavaScript / CSS? Вы можете сделать это в разделе «Система»> «Управление кэшем», а затем нажать кнопку в нижней части таблицы слева «Flus JavaScript / CSS Cache».


ДА .... очистить JS, а затем кэш. Ничего не меняется. Однако, если я переключаюсь в режим разработчика, слияние работает.
БруноБуэно

0

Вам нужно повторно развернуть статический после включения этой опции в производственном режиме.


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

Если это не работает, то проблема может быть в разрешении. Можете ли вы проверить доступ к веб-
серверу

0

Я просто сделал следующее, и проблема была решена.

bin/magento setup:upgrade

bin/magento indexer:reindex

bin/magento deploy:mode:set production -s

bin/magento setup:di:compile

(Здесь был секрет, чтобы запустить di: compile после производства)

bin/magento setup:static-content:deploy

0

У меня была проблема, когда JavaScript не скомпилирован, работает селектор jquery.

$ ('# my_element'). click (function () {alert ('Hello World');});

Но после компиляции, сжатия и объединения мне нужно кодировать:

$ ('body #my_element'). click (function () {alert ('Hello World');});

Не спрашивайте почему, кажется, что при чтении непосредственно из кэша код requirejs выполняется до того, как domReady и элементы присоединяются к разным элементам на некоторой другой странице.

Даллас Кларк
источник
-1

Удалить кеш вручную var / cache и удалить сессию вручную var / session

Усман Файяз
источник
1
Удаление var/sessionникогда не является подходящим решением. magento.stackexchange.com/questions/94589/…
Фабиан Шменглер,
-1
  1. Также включите опцию «Включить связывание JavaScript»

    store-> configuration-> advanced-> developer-> javascript setting->

  2. Включите комплектацию JavaScript "да" и очистите кеш

Сагар Добария
источник
2
Случайный совет, который не имеет ничего общего с вопросом.
ladle3000