Magento2 не читає мій Requjs-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

Але якщо я змінити рядок Requ [] на це:

 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

Отже, я не в змозі зрозуміти, чому мій Requjs-config.js не завантажується. Я також стежив за документацією.

Будь ласка, допоможіть


Що робити, якщо ви хочете використовувати якийсь спеціальний js-файл на всіх сторінках, не пов'язаних з модулем? Який правильний спосіб це зробити? Будь ласка, не посилайте мене на офіційну сторінку Magento.
Анітр

Відповіді:


27

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

У розділі pub / static / _requirejs / frontend / Простір імен / Тема / en_US видаліть файл Requjs-config.js .

Оновіть свою сторінку, і вона знову буде створена з новим вмістом.

Якщо це не працює, видаліть Requjs-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 від мене
Prashant Patil

11

Проблема полягає в тому, що ви не ввімкнули режим розробника. В результаті кеш файлів знаходиться в pub/staticпапці.


7
Щоб увімкнути режим розробника, ви можете натиснути наступну команду в CLI php bin / magento розгортання: режим: встановити розробника
Bhupendra Jadeja

6

Після команди Розгортання потрібно встановити режим розробника та очистити кеш. Його добре працює.

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

Також очистіть кеш браузера, щоб побачити ефект.


1

Це може допомогти комусь із дуже схожими проблемами на локальному рівні з nginx. Блок / статичний не був переписаний правильно, і це потрібно було додати за цим коментарем https://github.com/magento/magento2/isissue/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";
}


-1

Ви можете виконати наведені нижче кроки, і це буде виправлено.

1) Встановити режим розгортання на виробництво - php magento розгорнути: режим: встановити виробництво (мініфікація js і css буде працювати в режимі виробництва. Якщо ви перебуваєте в режимі розробника з кодом, зміненим вище, проблеми з'являться, як я пережив це. Якщо мінімізація відключена, ви може також підтримувати режим розробника. Також перевірте, використовуючи ехо print_r ($ _ SERVER) в index.php, що режим виробництва або режим розробника правильно встановлено перед завантаженням веб-сайту)

2) Очистіть всі налаштування кешів на сервері

  • /etc/init.d/nginx перезапуск
  • /etc/init.d/php5.6-fpm перезапуск
  • /etc/init.d/varnish перезапуск

3) Очистіть кеш браузера та перегляньте його в режимі анонімного перегляду. Це воно!

Ура!


ОП не згадує, чи використовуються Apache або Nginx. Це майже безпечно припустити, що це Apache.
Кріс К
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.