Magento2 nie czyta mojego pliku Requjs-config.js

17

Cześć. Jestem nowy w Magento2 i próbuję dowiedzieć się, jak RequireJS działa w Magento.

Oto moja sytuacja:

Mam następujący moduł:

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

Oto treść tego pliku:

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

Mój motyw jest w tej lokalizacji:

app/design/frontend/Mycompany/Basic

Moje Javascript są w następującej lokalizacji:

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

W pliku PHTML:

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

Dodałem linie:

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

Gdy sprawdzam swoją stronę w przeglądarce, pojawia się błąd 404 ze ścieżkami:

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

Ale jeśli zmienię wiersz wymagający [] na to:

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

pliki się ładują.

Wyczyściłem również pamięć podręczną, mój motyw jest poprawny, wykonałem polecenie:

php bin/magento setup:static-content:deploy

Tak więc nie jestem w stanie dowiedzieć się, dlaczego mój plik Requjs-config.js nie ładuje się. Postępowałem również zgodnie z dokumentacją.

Proszę pomóż

Ashutosh
źródło
A jeśli chcesz użyć niestandardowego pliku js na wszystkich stronach niezwiązanych z modułem? Jak to zrobić? Proszę nie odsyłać mnie do oficjalnej strony Magento.
Anitr,

Odpowiedzi:

27

Znalazłem problem.

W obszarze pub / static / _requirejs / frontend / Namespace / Theme / en_US usuń plik Requjs-config.js .

Odśwież stronę, a zostanie wygenerowana ponownie z nową zawartością.

Jeśli to nie działa, usuń plik Requjs-config.js i uruchom następujące polecenia:

php bin/magento cache:clean
php bin/magento cache:flush
php bin/magento setup:upgrade
php bin/magento setup:di:compile
Ashutosh
źródło
Czy można dołączyć plik prototype.js?
Slimshadddyyy
Dziękuję .. To działa dla mnie .. :) +1 ode mnie
Prashant Patil
11

Problem polega na tym, że nie włączyłeś trybu programisty. W rezultacie pamięć podręczna plików znajduje się w pub/staticfolderze.

KAndy
źródło
7
Aby włączyć tryb programisty, możesz nacisnąć następujące polecenie w CLI php bin / magento deploy: mode: set developer
Bhupendra Jadeja
6

Po poleceniu Wdróż musisz ustawić tryb programisty i wyczyścić pamięć podręczną. Działa dobrze.

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

Wyczyść pamięć podręczną przeglądarki, aby zobaczyć efekt.

Rakesh Jesadiya
źródło
1

Może to pomóc komuś innemu z bardzo podobnym problemem na poziomie lokalnym z nginx. Blok / static nie zapisywał poprawnie i należy to dodać do tego komentarza 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
źródło
0

Upewnij się, że .htacessplik istnieje w pub/staticfolderze. a następnie zastosuj polecenie wdrażania.

Shashank Kumrawat
źródło
-1

Możesz wykonać poniższe kroki i zostanie to naprawione.

1) Ustaw tryb wdrażania na produkcję - php magento deploy: tryb: ustaw produkcję (minimalizacja js i css będzie działać w trybie produkcyjnym. Jeśli jesteś w trybie programisty z kodem zminimalizowanym powyżej, problemy pojawią się tak, jak ja tego doświadczyłem. może zachować tryb programisty. Sprawdź także za pomocą echa print_r ($ _ SERVER) w pliku index.php, czy tryb produkcji lub tryb programisty został poprawnie ustawiony przed załadowaniem strony internetowej)

2) Wyczyść wszystkie ustawienia pamięci podręcznej na serwerze

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

3) Wyczyść pamięć podręczną przeglądarki i wyświetl ją w trybie incognito. Otóż ​​to!

Twoje zdrowie!

Dasitha Abeysinghe
źródło
OP nie wspomina, czy używane są Apache czy Nginx. Można niemal bezpiecznie założyć, że to Apache.
Chris K