Magento2 tidak membaca requirejs-config.js saya


17

Hai, saya baru mengenal Magento2 dan mencoba mencari tahu bagaimana RequireJS bekerja di Magento.

Inilah situasi saya:

Saya memiliki modul berikut:

app/code/Mymodule/Test/view/frontend/requirejs-config.js

Inilah isi dari file ini:

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'
    }
}
};

Tema saya ada di lokasi ini:

app/design/frontend/Mycompany/Basic

Javascripts saya ada di lokasi berikut:

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

Dalam file PHTML:

app/code/Mymodule/Test/view/frontend/templates/home.phtml

Saya menambahkan baris:

require(['jqueryNoConflict', 'flexslider'],function($, flexslider){
    (function($) {
        $(window).load(function () {
            $('.flexslider').flexslider();
        });
    })(jQuery);
});

Ketika saya memeriksa halaman saya di browser, saya mendapatkan 404 kesalahan dengan jalur:

http://mag2.com.local/pub/static/frontend/Mycompany/Basic/en_US/flexslider.js

Tetapi jika saya mengubah baris wajib [] ke ini:

 require(['Mymodule_Test/js/jquery.no-conflict', 'Mymodule_Test/js/jquery.flexslider-min'],function($, flexslider){
        (function() {
            $(window).load(function () {
                $('.flexslider').flexslider();
            });
        })(jQuery);
    });

file sedang dimuat.

Saya juga membersihkan cache, tema saya benar, saya menjalankan perintah:

php bin/magento setup:static-content:deploy

Jadi, saya tidak bisa mencari tahu mengapa requirejs-config.js saya tidak dimuat. Saya mengikuti dokumentasi juga.

Tolong bantu


Bagaimana jika Anda ingin menggunakan beberapa file js khusus pada semua halaman, tidak terkait dengan modul? Apa cara yang benar untuk melakukannya? Tolong, jangan rujuk saya ke halaman resmi Magento.
Anitr

Jawaban:


27

Saya menemukan masalahnya.

Di bawah pub / static / _requirejs / frontend / Namespace / Theme / en_US , hapus file yang diperlukanejs-config.js .

Refresh halaman Anda dan itu akan dihasilkan lagi dengan konten baru.

Jika tidak berfungsi, hapus requireejs-config.js dan jalankan perintah berikut:

php bin/magento cache:clean
php bin/magento cache:flush
php bin/magento setup:upgrade
php bin/magento setup:di:compile

Apakah mungkin untuk memasukkan prototype.js?
Slimshadddyyy

Terima kasih .. Ini bekerja untuk saya .. :) +1 dari saya
Prashant Patil

11

Masalahnya adalah Anda tidak mengaktifkan mode pengembang. Akibatnya, cache file ada di pub/staticfolder.


7
Untuk mengaktifkan mode pengembang, Anda dapat menekan perintah berikut di CLI php bin / magento deploy: mode: set developer
Bhupendra Jadeja

6

Setelah Menyebarkan perintah, Anda harus mengatur mode pengembang dan menghapus cache. Ini bekerja dengan baik.

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

Bersihkan juga cache browser untuk melihat efeknya.


1

Ini dapat membantu orang lain dengan masalah yang sangat mirip pada nginx lokal. Blok / static tidak menulis ulang dengan benar dan ini perlu ditambahkan per komentar ini 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";
}


-1

Anda dapat mengikuti langkah-langkah di bawah ini dan itu akan diperbaiki.

1) Atur mode penyebaran ke produksi - php magento deploy: mode: atur produksi (js dan css minification akan bekerja dengan mode produksi. Jika Anda dalam mode pengembang dengan kode yang diperkecil masalah di atas akan muncul seperti yang saya alami. Jika minifikasi menonaktifkan Anda dapat mempertahankan mode pengembang. Juga pastikan menggunakan echo the print_r ($ _ SERVER) di index.php yang mode produksi atau mode pengembang diatur dengan benar sebelum memuat situs web)

2) Hapus semua pengaturan cache di server

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

3) Bersihkan cache browser dan lihat dalam mode penyamaran. Itu dia!

Bersulang!


OP tidak menyebutkan apakah Apache atau Nginx digunakan. Hampir aman untuk menganggap itu adalah Apache.
Chris K
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.