Magento2 не читает мой requirejs-config.js


17

Привет, я новичок в 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 не загружается. Я также следил за документацией.

Пожалуйста помоги


А что если вы хотите использовать какой-нибудь пользовательский файл js на всех страницах, не связанных с модулем? Как правильно это сделать? Пожалуйста, не ссылайтесь на официальную страницу Magento.
Anitr

Ответы:


27

Я нашел проблему.

В каталоге pub / static / _requirejs / frontend / Namespace / Theme / 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

Можно ли включить prototype.js?
Slimshadddyyy

Спасибо .. Это работает для меня .. :) +1 от меня
Прашант Патил

11

Проблема в том, что вы не включили режим разработчика. В результате кеш файлов находится в pub/staticпапке.


7
Чтобы включить режим разработчика, вы можете нажать следующую команду в CLI php bin / magento deploy: mode: set developer
Bhupendra Jadeja

6

После команды Deploy необходимо установить режим разработчика и очистить кеш. Работает нормально.

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

Также очистите кеш браузера, чтобы увидеть эффект.


1

Это может помочь кому-то еще с очень похожей проблемой в локальной среде с 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";
}

0

Пожалуйста, убедитесь, что .htacessфайл существует в pub/staticпапке. и затем примените команду развертывания.


-1

Вы можете выполнить следующие шаги, и это будет исправлено.

1) Установите режим развертывания на производство - php magento deploy: mode: установите производство (js и css minification будут работать с производственным режимом. Если вы находитесь в режиме разработчика с кодом, уменьшенным выше, то проблемы будут отображаться так, как я это испытал. Если минификация отключена, вы может сохранить режим разработчика. Также проверьте с помощью echo print_r ($ _ SERVER) в index.php, что рабочий режим или режим разработчика правильно установлены перед загрузкой веб-сайта)

2) Очистить все настройки кешей на сервере

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

3) Очистите кеш браузера и просмотрите его в режиме инкогнито. Это оно!

Ура!


OP не упоминает, используются ли Apache или Nginx. Почти безопасно предположить, что это Apache.
Крис К
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.