web-dev-qa-db-fra.com

Magento2 ne lit pas mon requirejs-config.js

Je suis nouveau dans Magento2 et j'essaie de comprendre le fonctionnement de RequireJS dans Magento.

Voici ma situation:

J'ai le module suivant:

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

Voici le contenu de ce fichier:

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'
    }
}
};

Mon thème est à cet endroit:

app/design/frontend/Mycompany/Basic

Mes Javascripts sont à l'emplacement suivant:

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

Dans le fichier PHTML:

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

J'ai ajouté les lignes:

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

Lorsque je vérifie ma page dans le navigateur, j'obtiens une erreur 404 avec les chemins:

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

Mais si je change la ligne require [] en ceci:

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

les fichiers sont en cours de chargement.

J'ai aussi vidé le cache, mon thème est correct, j'ai exécuté la commande:

php bin/magento setup:static-content:deploy

Donc, je ne suis pas capable de comprendre pourquoi mon requirejs-config.js ne se charge pas. J'ai également suivi la documentation.

8
Ashutosh

J'ai trouvé le problème. 

Sous pub/static/_requirejs/frontend/Namespace/Theme/en_US , supprimez le fichier requirejs-config.js

Actualisez votre page et il sera généré à nouveau avec un nouveau contenu.

13
Ashutosh

Cela peut aider quelqu'un d'autre avec un problème très similaire en local avec nginx. Le bloc/statique ne réécrivait pas correctement et devait être ajouté selon ce commentaire 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";
}
1
Joshua Fricke

L'explication détaillée est ici

À la demande d'autres membres, en ajoutant les bits importants: 

Vérifiez si vous pouvez trouver le fichier qu'il essaie de charger sur le système de fichiers. Si c'est le cas, cela indiquerait plutôt un problème de configuration du serveur Web. Si ce n'est pas le cas, vérifiez l'autorisation du fichier, puis déployez le contenu statique. 

0
Asrar