Zusammengeführtes JS und CSS funktionieren im Produktionsmodus nicht


24

Ich war im Entwicklermodus , alles war großartig. Als ich in den Produktionsmodus wechselte, schienen die zusammengeführten Optionen von CSS und JS ignoriert zu werden. Es wurden wieder alle CSS und JS aufgelistet.

Auch die Produktseite zeigt nur die Bilder des Produkts im Entwicklermodus, nach dem Wechsel in den Produktionsmodus verschwinden sie.

Irgendwelche Gedanken, um mir zu helfen?


Der Punkt ist, ich mache es.

Folgendes habe ich nacheinander getan:

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

Und bevor ich anfange, sind die Optionen für das Zusammenführen JA und ich war im Entwicklermodus.


Hallo, hast du eine Lösung für dieses Problem? Ich erhalte das gleiche Problem in Magento 2.0.7. Bitte geben Sie die Lösung, wenn Sie welche haben, Danke
Ashish Jagnani

Das gleiche Problem, dem ich gegenüberstehe, bitte helfen Sie mir
Rv Singh

Antworten:


19

Ich habe gerade Folgendes getan und das Problem wurde gelöst:

bin / magento setup: upgrade

bin / magento indexer: neu indizieren

bin / magento deploy: mode: setze produktion -s

# Hier war das Geheimnis: Führen Sie das di: compile nach der Produktion aus
bin / magento setup: di: compile  

bin / magento setup: static-content: deploy

2
Ich habe es genauso versucht, aber kein Glück
Pradeep Kumar

Das hat bei mir funktioniert.
dchayka

Wenn ich den Befehl "production -s" ausführe, wird meine Site gelöscht und ein sehr ungewöhnlicher Fehler ausgegeben: Warnung: include (/ siteRoot / html / var / view_preprocessed / html / vendor / magento / module-theme / view / base / templates / root. phtml): Fehler beim Öffnen des Streams: Keine solche Datei oder kein solches Verzeichnis in /siteRoot/html/vendor/magento/framework/View/Result/Page.php in Zeile 312
Jai

Ein anderer - das hat bei mir funktioniert. Für den Fall, dass jemand anderes das Problem hat, das ich hatte. CSS würde minimiert und gebündelt, JS jedoch nicht, obwohl die Optionen im Administrator aktiviert waren. Das Hinzufügen der -s im eingestellten Produktmodus machte den Unterschied. Auch das Backend ist jetzt VIEL schneller. Ich habe dieselbe Reihenfolge und dieselben Befehle verwendet, aber es war das "-s", das den Unterschied
ausmachte.

Muss ich zuerst wieder in den Entwicklungsmodus wechseln? Ich habe getan, was Sie erwähnt haben, aber kein Unterschied ...
Jilco Tigchelaar

2

Stellen Sie sicher, dass Sie auch Ihre NGINX-Konfigurationsdatei überprüfen.

Wenn dort eine Variable $MAGE_MODEfestgelegt ist, muss diese ebenfalls in geändert werden production, und die Datei muss gespeichert werden

Danach müssen Sie NGINX je nach Bedarf neu laden oder neu starten.

sudo service nginx reload

ODER

sudo service nginx restart

Überprüfen Sie anschließend, app/etc/env.phpob der MAGE_MODEArray-Schlüssel ebenfalls auf gesetzt ist, productionwenn er nicht auf geändert wurde, productionoder verwenden Sie den Befehl

php bin/magento deploy:mode:set production

Nachdem Sie den Befehl ausgeführt haben, prüfen Sie, ob sich der Wert geändert app/etc/env.phphat. Manchmal kann es zu Berechtigungsproblemen kommen.

Bereinigen Sie anschließend den pub/staticOrdner.

rm -rf pub/static/*

Leeren / Leeren Sie Ihren Cache

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

Jetzt können Sie die Bereitstellung statischer Inhalte ausführen

php bin/magento setup:static-content:deploy

Hoffe das hilft.


1

Ich habe das ähnliche Problem. Die Ursache für ein fehlendes Image ist ein Fehler in der JS-Datei nach dem Minimieren von JS. Sie können dies in Ihrem Browser überprüfen (Firebug usw.).

... / div> '; return __p};}) (Fenster, Dokument, Speicherort, Typ von jQuery! ==' undefined '&& jQu

Ich löste dieses Problem, indem ich alle Dateien in var / cache / entfernte.und pub / static / und setup: static-content: erneut bereitstellen

Es gibt aber noch ein anderes Problem: Es geht um den Braintree, wenn Sie ihn aktivieren. Braintree wird aufgrund eines anderen JS-Fehlers nicht angezeigt.

Fehler: Skriptfehler für: https://js.braintreegateway.com/v2/braintree.js http://requirejs.org/docs/errors.html#scripterror

... Fehler (id, msg, err, requireModules) {var e = neuer Fehler (msg + '\ nhttp: //requirejs.org/doc ...

Im Moment benutze ich die Funktion zum Minimieren von js einfach nicht, um den Ärger zu vermeiden, bis eine Lösung gefunden ist.


1

Dies sind die Schritte, die für mich auf Magento ver gearbeitet haben. 2.1.7 mit Redis (ohne Varnish). Es ist jedoch immer noch unklar, ob alles so funktioniert, wie es sollte. JS wird minimiert und gebündelt (unklar, was Zusammenführung tun soll). CSS wird minimiert (es wird nicht zusammengeführt).

  1. Schalten Sie den gesamten Magento-Cache aus.
  2. Cache löschen.
  3. Schalten Sie alle fünf css / js-Konfigurationen ein (entweder in admin oder über die Datenbank).
  4. Generieren Sie statische Dateien.
  5. Magento Cache leeren (Kommandozeile). Zur Sicherheit (möglicherweise nicht erforderlich).
  6. Löschen Sie den Opcache (falls nicht auf automatische Aktualisierung eingestellt).
  7. Aktualisieren Sie die Frontend-Homepage (und überprüfen Sie die Browserkonsole auf Fehler).
  8. Aktivieren Sie den Magento-Cache.

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

Das einfache Einschalten der Configs und das Löschen des Cache funktionierten nicht - die Frontend-Browserkonsole meldete viele js-Fehler.


Merge fügt Ihre Dateien zu einer zusammen.
ladle3000

0

Haben Sie versucht, JavaScript / CSS zu leeren? Sie können dies unter System> Cache Management tun und dann auf die Schaltfläche unten in der Tabelle links "Flus JavaScript / CSS Cache" klicken.


YEP ... Js leeren, dann zwischenspeichern. Es ändert sich nichts. Wenn ich jedoch in den Entwicklermodus wechsle, funktioniert die Zusammenführung.
BrunoBueno

0

Sie müssen static erneut bereitstellen, nachdem Sie diese Option im Produktionsmodus aktiviert haben.


Der Punkt ist, ich mache es. Ich habe gerade hier gepostet, was ich getan habe.
BrunoBueno

Wenn es nicht funktioniert, liegt das Problem möglicherweise in der Erlaubnis. Können Sie Ihr Webserver-Zugriffs- /
Fehlerprotokoll

0

Ich habe gerade Folgendes getan und das Problem wurde gelöst.

bin/magento setup:upgrade

bin/magento indexer:reindex

bin/magento deploy:mode:set production -s

bin/magento setup:di:compile

(Hier war das Geheimnis, das di: compile nach der Produktion laufen zu lassen)

bin/magento setup:static-content:deploy

0

Ich hatte das Problem, als das JavaScript dekompiliert wurde. Der JQuery Selector funktioniert.

$ ('# my_element'). click (function () {alert ('Hallo Welt');});

Aber sobald kompiliert, komprimiert und verbunden, muss ich dann codieren:

$ ('body #my_element'). click (function () {alert ('Hallo Welt');});

Fragen Sie nicht warum, es scheint, dass beim Lesen direkt aus dem Cache der Code requirejs ausgeführt wird, bevor domReady und die Elemente an verschiedene Elemente auf einer anderen Seite angefügt werden.



-1
  1. Bitte aktivieren Sie auch die Option "JavaScript-Bündelung aktivieren"

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

  2. Aktivieren Sie das JavaScript-Bundling-Set auf "Ja" und leeren Sie den Cache


2
Zufällige Ratschläge, die nichts mit der Frage zu tun haben.
ladle3000
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.