Magento2 não está lendo meu requirejs-config.js

17

Olá, sou novo no Magento2 e estou tentando descobrir como o RequireJS funciona no Magento.

Aqui está a minha situação:

Eu tenho o seguinte módulo:

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

Aqui está o conteúdo deste arquivo:

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

Meu tema está neste local:

app/design/frontend/Mycompany/Basic

Meus Javascripts estão no seguinte local:

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

No arquivo PHTML:

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

Eu adicionei as linhas:

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

Quando verifico minha página no navegador, recebo o erro 404 com os caminhos:

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

Mas se eu alterar a linha require [] para isso:

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

os arquivos estão carregando.

Também limpei o cache, meu tema está correto, executei o comando:

php bin/magento setup:static-content:deploy

Portanto, não consigo descobrir por que meu requirejs-config.js não está carregando. Eu segui a documentação também.

Por favor ajude

Ashutosh
fonte
E se você quiser usar algum arquivo js personalizado em todas as páginas, não relacionado ao módulo? Qual é o caminho certo para fazer isso? Por favor, não me refira à página oficial do Magento.
Anitr 6/12/16

Respostas:

27

Eu encontrei o problema

Em pub / static / _requirejs / frontend / Namespace / Theme / en_US , exclua o arquivo requirejs-config.js .

Atualize sua página e ela será gerada novamente com novo conteúdo.

Se não funcionar, exclua o requirejs-config.js e execute os seguintes comandos:

php bin/magento cache:clean
php bin/magento cache:flush
php bin/magento setup:upgrade
php bin/magento setup:di:compile
Ashutosh
fonte
É possível incluir prototype.js?
Slimshadddyyy
Obrigado .. Funciona para mim .. :) +1 de mim
Prashant Patil
11

O problema é que você não ativou o modo de desenvolvedor. Como resultado, o cache de arquivos está na pub/staticpasta.

KAndy
fonte
7
Para ativar o modo de desenvolvedor você pode bater seguinte comando no CLI bin php / magento deploy: Modo: desenvolvedor set
Bhupendra Jadeja
6

Após o comando Deploy, você deve definir o modo de desenvolvedor e limpar o cache. Está funcionando bem.

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

Limpe também o cache do navegador para ver o efeito.

Rakesh Jesadiya
fonte
1

Isso pode ajudar alguém com um problema muito semelhante no local com nginx. O bloco / static não foi reescrito corretamente e isso precisou ser adicionado por este comentário 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
fonte
0

Verifique se o .htacessarquivo existe na pub/staticpasta e, em seguida, aplique o comando deploy.

Shashank Kumrawat
fonte
-1

Você pode seguir as etapas abaixo e será corrigido.

1) Defina o modo de implantação como produção - php magento deploy: mode: set production (a minificação js e css funciona com o modo de produção. Se você estiver no modo desenvolvedor com o código minificado acima, os problemas aparecerão como eu experimentei. pode manter o modo de desenvolvedor. Verifique também usando echo o print_r ($ _ SERVER) no index.php se o modo de produção ou o modo de desenvolvedor está definido corretamente antes de carregar o site)

2) Limpe todas as configurações de caches no servidor

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

3) Limpe o cache do navegador e visualize-o no modo de navegação anônima. É isso aí!

Felicidades!

Dasitha Abeysinghe
fonte
O OP não menciona se o Apache ou o Nginx são usados. É quase seguro assumir que é o Apache.
21718 Chris K