Magento2 ne lit pas mon requirejs-config.js


17

Bonjour, je suis nouveau sur Magento2 et j'essaie de comprendre comment fonctionne 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 se trouvent à 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 se chargent.

J'ai également 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 en mesure de comprendre pourquoi mon requirejs-config.js ne se charge pas. J'ai également suivi la documentation.

Veuillez aider


Qu'en est-il si vous souhaitez utiliser un fichier js personnalisé sur toutes les pages, non lié au module? Quelle est la bonne façon de procéder? S'il vous plaît, ne me référez pas à la page officielle de Magento.
Anitr

Réponses:


27

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 elle sera à nouveau générée avec un nouveau contenu.

Si cela ne fonctionne pas, supprimez le requirejs-config.js et exécutez les commandes suivantes:

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

Est-il possible d'inclure prototype.js?
Slimshadddyyy

Merci .. Ça marche pour moi .. :) +1 de moi
Prashant Patil

11

Le problème est que vous n'avez pas activé le mode développeur. Par conséquent, le cache de fichiers se trouve dans le pub/staticdossier.


7
Pour activer le mode développeur, vous pouvez appuyer sur la commande suivante dans CLI php bin / magento deploy: mode: set developer
Bhupendra Jadeja

6

Après la commande Deploy, vous devez définir le mode développeur et vider le cache. Son fonctionne bien.

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

Vider également le cache du navigateur pour voir l'effet.


1

Cela peut aider quelqu'un d'autre avec un problème très similaire sur local avec nginx. Le bloc / statique n'a pas été réécrit correctement et cela devait être ajouté par 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";
}

0

Veuillez vous assurer que le .htacessfichier existe dans le pub/staticdossier. puis appliquez la commande deploy.


-1

Vous pouvez suivre les étapes ci-dessous et ce sera corrigé.

1) Définir le mode de déploiement sur production - php magento deploy: mode: définir la production (la minification js et css fonctionnera avec le mode de production.Si vous êtes en mode développeur avec du code minifié ci-dessus, les problèmes apparaîtront comme je l'ai vécu. peut conserver le mode développeur. Vérifiez également en utilisant echo le print_r ($ _ SERVER) dans index.php que le mode de production ou le mode développeur est correctement défini avant de charger le site Web)

2) Effacez tous les caches installés sur le serveur

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

3) Videz le cache du navigateur et affichez-le en mode navigation privée. C'est ça!

À votre santé!


OP ne mentionne pas si Apache ou Nginx sont utilisés. Il est presque sûr de supposer qu'il s'agit d'Apache.
Chris K
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.