Magento2 не читает мой requirejs-config.js
Привет, я новичок в Magento2 и пытаюсь понять, как RequireJS работает в Magento.
Вот моя ситуация:
У меня есть следующий модуль:
app/code/Mymodule/Test/view/frontend/requirejs-config.js
Вот содержимое этого файла:
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'
}
}
};
Моя тема находится по этому адресу:
app/design/frontend/Mycompany/Basic
Мои Javascripts находятся по следующему адресу:
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
В файле PHTML:
app/code/Mymodule/Test/view/frontend/templates/home.phtml
Я добавил строки:
require(['jqueryNoConflict', 'flexslider'],function($, flexslider){
(function($) {
$(window).load(function () {
$('.flexslider').flexslider();
});
})(jQuery);
});
Когда я проверяю свою страницу в браузере, я получаю ошибку 404 с путями:
http://mag2.com.local/pub/static/frontend/Mycompany/Basic/en_US/flexslider.js
Но если я изменю строку require[] на эту:
require(['Mymodule_Test/js/jquery.no-conflict', 'Mymodule_Test/js/jquery.flexslider-min'],function($, flexslider){
(function() {
$(window).load(function () {
$('.flexslider').flexslider();
});
})(jQuery);
});
Файлы загружаются.
Я также очистил кэш, моя тема верна, я выполнил команду:
php bin/magento setup:static-content:deploy
Итак, я не могу понять, почему мой requirejs-config.js не загружается. Я также следил за документацией.
Пожалуйста, помогите
6 answers
Я нашел проблему.
Под паб/статический/_requirejs/интерфейс/Пространство имен/Тема/en_US, удалите файл requirejs-config.js.
Обновите свою страницу, и она будет создана снова с новым контентом.
Если это не сработает, удалите requirejs-config.js и выполните следующие команды:
php bin/magento cache:clean
php bin/magento cache:flush
php bin/magento setup:upgrade
php bin/magento setup:di:compile
Проблема в том, что вы не включили режим разработчика. В результате кэш файлов находится в папке pub/static
.
После команды Развертывания вам необходимо установить режим разработчика и очистить кэш. Он работает нормально.
php bin/magento deploy:mode:set developer && php bin/magento cache:clean
Также очистите кэш браузера, чтобы увидеть эффект.
Это может помочь кому-то еще с очень похожей проблемой на локальном с nginx. Блок /static не был переписан правильно, и это необходимо было добавить в этот комментарий 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";
}
Пожалуйста, убедитесь, что файл .htacess
существует в папке pub/static
. а затем примените команду развертывания.
Вы можете выполнить следующие действия, и это будет исправлено.
1) Установите режим развертывания в рабочий режим - развертывание php magento: режим: установите рабочий режим (минимизация js и css будет работать в производственном режиме.Если вы находитесь в режиме разработчика с уменьшенным кодом, описанные выше проблемы будут отображаться так, как я это испытал. Если минификация отключена, вы можете сохранить режим разработчика. Также проверьте с помощью echo значение print_r($_SERVER) в index.php этот рабочий режим или режим разработчика правильно установлен перед загрузкой веб-сайт)
2) Очистите все настройки кэшей на сервере
- / etc/init.d/перезапуск nginx
- / etc/init.d/php5.6-перезапуск fpm
- / etc/init.d/перезапуск лака
3) Очистите кэш браузера и просмотрите его в режиме инкогнито. Вот и все!
Ура!