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

Ashutosh
la source
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
Ashutosh
la source
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.

KAndy
la source
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.

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

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

Shashank Kumrawat
la source
-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é!

Dasitha Abeysinghe
la source
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