Magento2 non legge il mio requestjs-config.js


17

Ciao, sono nuovo di Magento2 e sto cercando di capire come RequireJS funziona in Magento.

Ecco la mia situazione:

Ho il seguente modulo:

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

Ecco il contenuto di questo file:

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

Il mio tema è in questa posizione:

app/design/frontend/Mycompany/Basic

I miei Javascripts si trovano nella seguente posizione:

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

Nel file PHTML:

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

Ho aggiunto le righe:

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

Quando controllo la mia pagina nel browser, ottengo un errore 404 con i percorsi:

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

Ma se cambio la riga request [] in questo:

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

i file si stanno caricando.

Ho anche cancellato la cache, il mio tema è corretto, ho eseguito il comando:

php bin/magento setup:static-content:deploy

Quindi, non sono in grado di capire perché il mio requestjs-config.js non si sta caricando. Ho seguito anche la documentazione.

Per favore aiuto


Che dire se si desidera utilizzare un file js personalizzato su tutte le pagine, non correlato al modulo? Qual è il modo giusto per farlo? Per favore, non farmi riferimento alla pagina ufficiale di Magento.
Anitr,

Risposte:


27

Ho trovato il problema.

Sotto pub / static / _requirejs / frontend / Namespace / Theme / en_US , elimina il file requirejs-config.js .

Aggiorna la tua pagina e verrà generata di nuovo con nuovi contenuti.

Se non funziona, elimina il file requestjs-config.js ed esegui i seguenti comandi:

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

È possibile includere prototype.js?
Slimshadddyyy

Grazie .. Funziona per me .. :) +1 da parte mia
Prashant Patil

11

Il problema è che non hai abilitato la modalità sviluppatore. Di conseguenza, la cache dei file si trova nella pub/staticcartella.


7
Per abilitare la modalità sviluppatore puoi premere il seguente comando in CLI php bin / magento deploy: mode: set developer
Bhupendra Jadeja

6

Dopo il comando Distribuisci, devi impostare la modalità sviluppatore e cancellare la cache. Funziona benissimo.

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

Svuota anche la cache del browser per vedere l'effetto.


1

Questo può aiutare qualcun altro con un problema molto simile su local con nginx. Il blocco / static non è stato riscritto correttamente e questo doveva essere aggiunto per questo commento 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

Assicurati che il .htacessfile esista nella pub/staticcartella. e quindi applicare il comando deploy.


-1

Puoi seguire i passaggi seguenti e sarà risolto.

1) Imposta la modalità di distribuzione su produzione - php magento deploy: mode: imposta la produzione (la minificazione js e css funzionerà con la modalità di produzione.Se sei in modalità sviluppatore con il codice minimizzato sopra i problemi verranno visualizzati come l'ho sperimentato. Se la minificazione è disabilitata può mantenere la modalità sviluppatore. Inoltre, verifica utilizzando echo print_r ($ _ SERVER) in index.php che la modalità di produzione o la modalità sviluppatore siano impostate correttamente prima di caricare il sito Web)

2) Cancella tutte le impostazioni di cache nel server

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

3) Cancella la cache del browser e visualizzala in modalità di navigazione in incognito. Questo è tutto!

Saluti!


OP non menziona se vengono utilizzati Apache o Nginx. È quasi sicuro supporre che sia Apache.
Chris K,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.