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

Javascript ของฉันอยู่ที่ตำแหน่งต่อไปนี้:

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(['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 ที่กำหนดเองในทุกหน้าไม่เกี่ยวข้องกับโมดูล วิธีที่ถูกต้องในการทำคืออะไร? กรุณาอย่าอ้างอิงฉันไปที่หน้าอย่างเป็นทางการของวีโอไอพี
Anitr

คำตอบ:


27

ฉันพบปัญหา

ภายใต้ผับ / คงที่ / _requirejs / ส่วนหน้า / Namespace / ธีม / 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

เป็นไปได้หรือไม่ที่จะรวมต้นแบบ.js?
Slimshadddyyy

ขอบคุณ .. มันใช้งานได้สำหรับฉัน .. :) +1 จากฉัน
Prashant Patil

11

ปัญหาคือคุณไม่ได้เปิดใช้งานโหมดผู้พัฒนา เป็นผลให้ไฟล์แคชอยู่ในpub/staticโฟลเดอร์


7
ในการเปิดใช้งานโหมดผู้พัฒนาคุณสามารถกดคำสั่งต่อไปนี้ในการปรับใช้
Bhupendra Jadeja

6

หลังจากปรับใช้คำสั่งคุณต้องตั้งค่าโหมดผู้พัฒนาและล้างแคช มันทำงานได้ดี

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

ล้างแคชเบราว์เซอร์เพื่อดูเอฟเฟกต์


1

สิ่งนี้อาจช่วยคนอื่นด้วยปัญหาที่คล้ายกันมากในท้องถิ่นด้วย nginx บล็อก / สถิตไม่ได้เขียนใหม่อย่างถูกต้องและจำเป็นต้องเพิ่มต่อความคิดเห็นนี้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) ตั้งค่าโหมดการปรับใช้เป็นการผลิต - การปรับใช้วีโอไอพีรุ่น: โหมด: ตั้งค่าการผลิต (การลดขนาด js และ css จะทำงานร่วมกับโหมดการผลิตหากคุณอยู่ในโหมดนักพัฒนาซอฟต์แวร์ที่มีรหัส สามารถทำให้โหมดนักพัฒนาซอฟต์แวร์ตรวจสอบได้ด้วยการใช้ echo print_r ($ _ SERVER) ใน index.php โหมดการผลิตหรือโหมดนักพัฒนาซอฟต์แวร์ที่ตั้งค่าไว้อย่างถูกต้องก่อนโหลดเว็บไซต์)

2) ล้างการตั้งค่าแคชทั้งหมดในเซิร์ฟเวอร์

  • /etc/init.d/nginx รีสตาร์ท
  • /etc/init.d/php5.6-fpm รีสตาร์ท
  • /etc/init.d/ เริ่มต้นใหม่

3) ล้างแคชเบราว์เซอร์และดูในโหมดไม่ระบุตัวตน แค่นั้นแหละ!

ไชโย!


OP ไม่ได้พูดถึงว่ามีการใช้ Apache หรือ Nginx มันเกือบจะปลอดภัยที่จะถือว่าเป็น Apache
คริส K
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.