Magento2 liest meine requirejs-config.js nicht


17

Hallo, ich bin neu in Magento2 und versuche herauszufinden, wie RequireJS in Magento funktioniert.

Hier ist meine Situation:

Ich habe folgendes Modul:

app/code/Mymodule/Test/view/frontend/requirejs-config.js

Hier ist der Inhalt dieser Datei:

var config = {
map: {
    '*': {
        jQuery110: "Mymodule_Test/js/jquery-1.10.2",
        jqueryNoConflict: 'Mymodule_Test/js/jquery.no-conflict',
        flexslider: 'Mymodule_Test/js/jquery.flexslider-min',
        header: 'Mymodule_Test/js/store/header'
    }
}
};

Mein Thema ist an diesem Ort:

app/design/frontend/Mycompany/Basic

Meine Javascripts befinden sich an folgendem Ort:

app/code/Mymodule/Test/view/frontend/web/js/jquery.no-conflict.js
app/code/Mymodule/Test/view/frontend/web/js/jquery.flexslider-min.js
app/code/Mymodule/Test/view/frontend/web/js/store/header.js

In der PHTML-Datei:

app/code/Mymodule/Test/view/frontend/templates/home.phtml

Ich habe die Zeilen hinzugefügt:

require(['jqueryNoConflict', 'flexslider'],function($, flexslider){
    (function($) {
        $(window).load(function () {
            $('.flexslider').flexslider();
        });
    })(jQuery);
});

Wenn ich meine Seite im Browser überprüfe, erhalte ich 404-Fehler mit Pfaden:

http://mag2.com.local/pub/static/frontend/Mycompany/Basic/en_US/flexslider.js

Aber wenn ich die require [] -Zeile so ändere:

 require(['Mymodule_Test/js/jquery.no-conflict', 'Mymodule_Test/js/jquery.flexslider-min'],function($, flexslider){
        (function() {
            $(window).load(function () {
                $('.flexslider').flexslider();
            });
        })(jQuery);
    });

Die Dateien werden geladen.

Ich habe auch den Cache geleert, mein Theme ist korrekt, ich habe den Befehl ausgeführt:

php bin/magento setup:static-content:deploy

Ich kann also nicht herausfinden, warum meine requirejs-config.js nicht geladen wird. Ich habe auch die Dokumentation befolgt.

Bitte helfen Sie


Was ist, wenn Sie auf allen Seiten eine benutzerdefinierte js-Datei verwenden möchten, die nicht mit dem Modul zusammenhängt? Was ist der richtige Weg, um es zu tun? Bitte verweisen Sie mich nicht auf die offizielle Seite von Magento.
Anitr

Antworten:


27

Ich habe das Problem gefunden.

Löschen Sie unter pub / static / _requirejs / frontend / Namespace / Theme / de_DE die Datei requirejs-config.js .

Aktualisieren Sie Ihre Seite und sie wird erneut mit neuen Inhalten generiert.

Wenn es nicht funktioniert, löschen Sie die Datei requirejs-config.js und führen Sie die folgenden Befehle aus:

php bin/magento cache:clean
php bin/magento cache:flush
php bin/magento setup:upgrade
php bin/magento setup:di:compile

Ist es möglich, prototype.js einzubinden?
Slimshadddyyy

Vielen Dank .. Es funktioniert für mich .. :) +1 von mir
Prashant Patil

11

Das Problem ist, dass Sie den Entwicklermodus nicht aktiviert haben. Folglich befindet sich der Dateicache im pub/staticOrdner.


7
Um den Entwicklermodus zu aktivieren, können Sie in CLI php bin / magento deploy den
Bhupendra Jadeja

6

Nach dem Befehl Bereitstellen müssen Sie den Entwicklermodus festlegen und den Cache löschen. Es funktioniert gut.

php bin/magento deploy:mode:set developer && php bin/magento cache:clean

Löschen Sie auch den Browser-Cache, um den Effekt zu sehen.


1

Dies kann jemand anderem bei einem sehr ähnlichen lokalen Problem mit Nginx helfen. Der / static-Block wurde nicht korrekt überschrieben und musste gemäß diesem Kommentar hinzugefügt werden: https://github.com/magento/magento2/issues/7869#issuecomment-268585438

location /static/ {
    if ($MAGE_MODE = "production") {
      expires max;
    }

    # Remove signature of the static files that is used to overcome the browser cache
    location ~ ^/static/version {
      rewrite ^/static/(version\d*/)?(.*)$ /static/$2 last;
    }

    location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
      add_header Cache-Control "public";
      add_header X-Frame-Options "SAMEORIGIN";
      expires +1y;

      if (!-f $request_filename) {
        rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
      }
    }

    location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
      add_header Cache-Control "no-store";
      add_header X-Frame-Options "SAMEORIGIN";
      expires off;

      if (!-f $request_filename) {
         rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
      }
    }

    if (!-f $request_filename) {
      rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
    }

    add_header X-Frame-Options "SAMEORIGIN";
}

0

Bitte stellen Sie sicher, dass die .htacessDatei im pub/staticOrdner vorhanden ist. und wenden Sie dann den Befehl deploy an.


-1

Sie können die folgenden Schritte ausführen und es wird behoben.

1) Setze den Bereitstellungsmodus auf produktiv - php magento deploy: mode: setze produktiv (die Js- und CSS-Minimierung funktioniert mit dem Produktionsmodus. Wenn Sie sich im Entwicklermodus befinden und der Code minimiert ist, werden die oben genannten Probleme so angezeigt, wie ich es erlebt habe. Wenn die Minimierung deaktiviert ist kann den Entwicklermodus beibehalten. Überprüfen Sie auch mit Echo des print_r ($ _ SERVER) in der index.php, ob der Produktionsmodus oder der Entwicklermodus vor dem Laden der Website korrekt eingestellt wurde.

2) Löschen Sie alle im Server eingerichteten Caches

  • /etc/init.d/nginx neu starten
  • /etc/init.d/php5.6-fpm restart
  • /etc/init.d/varnish restart

3) Leeren Sie den Browser-Cache und zeigen Sie ihn im Inkognito-Modus an. Das ist es!

Prost!


OP erwähnt nicht, ob Apache oder Nginx verwendet werden. Es ist fast sicher anzunehmen, dass es sich um Apache handelt.
Chris K
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.