Об'єднані 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

І перш ніж почати, параметри Злиття - ТАК, і я був у режимі розробника.


Здравствуйте, у вас є рішення цього питання, я отримую те саме питання в magento 2.0.7. Будь ласка, дайте рішення, якщо у вас є таке, Дякую
Ashish Jagnani

те саме питання, з яким я зіткнувся, будь ласка, допоможіть мені
Rv Singh

Відповіді:


19

Я просто зробив наступне, і проблема була вирішена:

налаштування бін / магенто: оновлення

індексатор бін / магенто: реіндекс

bin / magento розгортання: режим: встановлення виробництва -s

# Тут був секрет: запустіть ді: компілювати після виробництва
налаштування bin / magento: di: compile  

налаштування bin / magento: статичний контент: розгортання

2
Я намагався так само, але не пощастило
Pradeep Kumar

Це працювало для мене.
дчайка

Якщо я виконую команду "production -s", вона видає мій сайт і дасть дуже незвичайну помилку: Попередження: включити (/ siteRoot / html / var / view_preprocessed / html / vendor / magento / module-topic / view / base / templates / root). PHTML): не вдалося відкрити потік: Немає такого файлу або каталогу в /siteRoot/html/vendor/magento/framework/View/Result/Page.php на лінії 312
Jai

Ще одне - що працювало на мене. У випадку, якщо у когось іншого виникли проблеми, я був. CSS міфіфікується та зв'язується, але JS не буде, незважаючи на те, що в адміністраторі були включені параметри. Додавання значення -s у встановлений режим продукту все змінило. Крім того, бекенд набагато швидший і зараз. Я використовував той самий порядок і команди, але це
змінило

Чи потрібно спочатку перейти в режим розробки? Я зробив те, про що ви згадали, але різниці немає ....
Jilco Tigchelaar

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};}) (вікно, документ, місцезнаходження, тип jQuery! ==' undefined '&& jQu

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

Але є ще одне питання - мова йде про брейнтри, якщо ви це дозволите. Брейнтрі не відображається через іншу помилку JS.

Помилка: помилка сценарію для: https://js.braintreegateway.com/v2/braintree.js http://requirejs.org/docs/errors.html#scripterror

... Помилка (id, msg, помилка, RequModules) {var e = нова помилка (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. Очистити опкаш (якщо не встановлено автоматичне оновлення).
  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

Просто ввімкнути конфігурації та очистити кеш не вийшло - консоль браузера frontend повідомила про багато помилок js.


Об'єднання об'єднає ваші файли в один.
ladle3000

0

Ви намагалися очистити JavaScript / CSS? Це можна зробити в розділі Система> Кеш керування, а потім натиснути кнопку, яка знаходиться внизу таблиці зліва "Flus JavaScript / CSS Cache"


YEP .... змийте js, потім кеш. Нічого не зміниться. Однак якщо я перейшов у режим розробника, злиття працює.
BrunoBueno

0

Потрібно перерозподілити статику після включення цієї опції у виробничому режимі.


Справа в тому, що я це роблю. Я щойно опублікував тут те, що робив.
BrunoBueno

Якщо це не працює, то проблема може бути в дозволі. Чи можете ви перевірити журнал доступу / помилок веб-сервера
KAndy

0

Я просто зробив наступне, і проблема була вирішена.

bin/magento setup:upgrade

bin/magento indexer:reindex

bin/magento deploy:mode:set production -s

bin/magento setup:di:compile

(Тут був секрет, щоб запустити ді: компілювати після виробництва)

bin/magento setup:static-content:deploy

0

У мене виникла проблема, коли JavaScript не відкомпільований, працює селектор jquery.

$ ('# my_element'). click (функція () {alar ('Hello World');});

Але після компіляції, стиснення та об'єднання мені потрібно кодувати:

$ ('body #my_element'). click (функція () {alar ('Hello World');});

Не запитуйте, чому, схоже, що читаючи безпосередньо з кеша, код Requjs виконується перед domReady, а елементи прикріплюються до різних елементів на якійсь іншій сторінці.



-1
  1. Увімкніть також опцію "Увімкнути пакет JavaScript"

    магазин-> конфігурація-> розширений-> розробник-> налаштування javascript->

  2. Увімкніть групування JavaScript, встановлену на "так", і кеш-флеш буде змінено


2
Порада Хафазара, яка не має нічого спільного з питанням.
ladle3000
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.