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

Ashutosh
quelle
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
Ashutosh
quelle
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.

KAndy
quelle
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.

Rakesh Jesadiya
quelle
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";
}
Joshua Fricke
quelle
0

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

Shashank Kumrawat
quelle
-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!

Dasitha Abeysinghe
quelle
OP erwähnt nicht, ob Apache oder Nginx verwendet werden. Es ist fast sicher anzunehmen, dass es sich um Apache handelt.
Chris K