Połączone JS i CSS nie działają w trybie produkcyjnym


24

Byłem w trybie programisty , wszystko było świetnie, kiedy zmieniłem na tryb produkcyjny , opcje Scalonych CSS i JS wydają się być ignorowane, wróciłem do listy wszystkich css i js.

Również strona produktu pokazuje tylko zdjęcia produktu w trybie programisty, po przejściu do trybu produkcji znikają.

Jakaś myśl, która może mi pomóc?


Chodzi o to, że to robię.

Oto co zrobiłem po kolei:

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

I jeszcze przed rozpoczęciem, opcje Scalaj są TAK i byłem w trybie programisty.


Witaj, Czy masz jakieś rozwiązanie tego problemu, otrzymuję ten sam problem w Magento 2.0.7. Podaj rozwiązanie, jeśli masz, Dzięki
Ashish Jagnani,

ten sam problem, przed którym stoję, proszę o pomoc
Rv Singh

Odpowiedzi:


19

Właśnie wykonałem następujące czynności i problem został rozwiązany:

Konfiguracja bin / magento: aktualizacja

bin / magento indexer: reindex

bin / magento deploy: mode: set production -s

# Oto sekret: uruchom di: compile po produkcji
Konfiguracja bin / magento: di: kompilacja  

Konfiguracja bin / magento: zawartość statyczna: wdrażanie

2
Próbowałem w ten sam sposób, ale bez powodzenia
Pradeep Kumar

To zadziałało dla mnie.
dchayka

Jeśli wykonam polecenie „production -s”, spowoduje to opróżnienie mojej witryny i wystąpi bardzo nietypowy błąd: Ostrzeżenie: include (/ siteRoot / html / var / view_preprocessed / html / vendor / magento / module-theme / view / base / templates / root). phtml): nie można otworzyć strumienia: brak takiego pliku lub katalogu w /siteRoot/html/vendor/magento/framework/View/Result/Page.php w linii 312
Jai

Kolejny - to działało dla mnie. W przypadku, gdy ktoś inny ma problem, ja byłem. CSS zminimalizuje i spakuje, ale JS tego nie zrobi, pomimo włączenia opcji w administratorze. Dodanie -s w ustawionym trybie produktu zrobiło różnicę. Ponadto backend jest teraz również DUŻO szybszy.
Używałem

Czy najpierw muszę wrócić do trybu programowania? Zrobiłem to, o czym wspomniałeś, ale nie ma różnicy ...
Jilco Tigchelaar,

2

Sprawdź także plik konfiguracyjny NGINX.

Jeśli jest tam $MAGE_MODEzestaw zmiennych , należy go również zmienić productioni zapisać plik

Następnie musisz ponownie załadować lub zrestartować NGINX w zależności od preferencji.

sudo service nginx reload

LUB

sudo service nginx restart

Następnie sprawdź swój app/etc/env.phpi sprawdź, czy MAGE_MODEklucz tablicy jest również ustawiony, productionjeśli nie, zmień go na productionlub możesz użyć polecenia

php bin/magento deploy:mode:set production

Po wykonaniu polecenia sprawdź, czy wartość się zmieniła app/etc/env.php, czasem mogą wystąpić problemy z uprawnieniami.

Następnie wyczyść pub/staticfolder.

rm -rf pub/static/*

Wyczyść / Opróżnij pamięć podręczną

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

Teraz możesz rozpocząć wdrażanie zawartości statycznej

php bin/magento setup:static-content:deploy

Mam nadzieję że to pomoże.


1

Mam podobny problem. Przyczyną braku obrazu jest błąd w pliku JS po zminimalizowaniu JS. Możesz to zweryfikować w przeglądarce (firebug itp.).

... / div> '; return __p};}) (okno, dokument, lokalizacja, typ jQuery! ==' undefined '&& jQu

Rozwiązałem to, usuwając cały plik z var / cache /i pub / static / and setup: static-content: wdrażaj ponownie

Ale jest jeszcze jeden problem, dotyczy to braintree, jeśli go włączysz. Braintree nie pojawia się z powodu kolejnego błędu JS.

Błąd: błąd skryptu dla: https://js.braintreegateway.com/v2/braintree.js http://requirejs.org/docs/errors.html#scripterror

... Błąd (id, msg, err, requModules) {var e = nowy Błąd (msg + '\ nhttp: //requirejs.org/doc ...

Na razie po prostu nie używam funkcji minify js, aby uniknąć problemów, dopóki nie zostanie znalezione rozwiązanie.


1

Oto kroki, które zadziałały dla mnie w Magento ver. 2.1.7 z Redis (nie działa Lakier). Jednak nadal nie jest jasne, czy wszystko działa tak, jak powinno. JS jest zminimalizowane i powiązane (nie jest jasne, co ma zrobić scalanie). CSS jest zminimalizowany (nie widzi się scalenia).

  1. Wyłącz całą pamięć podręczną Magento.
  2. Wyczyść pamięć podręczną redis.
  3. Włącz wszystkie pięć konfiguracji css / js (w trybie administratora lub poprzez bazę danych).
  4. Generuj pliki statyczne.
  5. Wyczyść pamięć podręczną Magento (wiersz poleceń). Dla bezpieczeństwa (może nie być wymagany).
  6. Wyczyść opcache (jeśli nie jest ustawione na automatyczne odświeżanie).
  7. Odśwież stronę główną interfejsu (i sprawdź konsolę przeglądarki pod kątem błędów).
  8. Włącz pamięć podręczną 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

Po prostu włączenie konfiguracji i czyszczenie pamięci podręcznej nie działało - konsola frontend przeglądarki zgłosiła wiele błędów js.


Scalanie scali twoje pliki razem w jeden.
ladle3000,

0

Czy próbowałeś opróżnić JavaScript / CSS? Możesz to zrobić w System> Zarządzanie pamięcią podręczną, a następnie naciśnij przycisk, który znajduje się na dole tabeli po lewej stronie „Flus JavaScript / CSS Cache”


YEP .... opróżnij js, a potem cache. Nic się nie zmienia. Jeśli jednak przełączę się w tryb programisty, scalanie działa.
BrunoBueno,

0

Musisz ponownie wdrożyć statyczne po włączeniu tej opcji w trybie produkcyjnym.


Chodzi o to, że to robię. Właśnie opublikowałem tutaj, co zrobiłem.
BrunoBueno,

Jeśli to nie działa, problem może dotyczyć uprawnień. Czy możesz sprawdzić dziennik dostępu / błędów serwera WWW
KAndy,

0

Właśnie wykonałem następujące czynności i problem został rozwiązany.

bin/magento setup:upgrade

bin/magento indexer:reindex

bin/magento deploy:mode:set production -s

bin/magento setup:di:compile

(Oto tajemnica, aby uruchomić di: kompilacja po produkcji)

bin/magento setup:static-content:deploy

0

Miałem problem, gdy JavaScript jest nieskompilowana, działa selektor jquery.

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

Ale po skompilowaniu, skompresowaniu i połączeniu, muszę kodować:

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

Nie pytaj dlaczego, wydaje się, że podczas odczytu bezpośrednio z pamięci podręcznej kod RequJs wykonuje się przed domReady, a elementy dołączają się do różnych elementów na innej stronie.



-1
  1. Włącz także opcję „Włącz pakiet JavaScript”

    sklep-> konfiguracja-> zaawansowane-> programista-> ustawienie javascript->

  2. Włącz pakietowanie JavaScript ustawione na „tak” i opróżnij pamięć podręczną


2
Przypadkowa rada, która nie ma nic wspólnego z pytaniem.
ladle3000,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.