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óż
Odpowiedzi:
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:
źródło
Problem polega na tym, że nie włączyłeś trybu programisty. W rezultacie pamięć podręczna plików znajduje się w
pub/static
folderze.źródło
Po poleceniu Wdróż musisz ustawić tryb programisty i wyczyścić pamięć podręczną. Działa dobrze.
Wyczyść pamięć podręczną przeglądarki, aby zobaczyć efekt.
źródło
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
źródło
Upewnij się, że
.htacess
plik istnieje wpub/static
folderze. a następnie zastosuj polecenie wdrażania.źródło
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
3) Wyczyść pamięć podręczną przeglądarki i wyświetl ją w trybie incognito. Otóż to!
Twoje zdrowie!
źródło