Mendapatkan TypeError: $ .widget bukan fungsi Magento 2

9

Saya mendapatkan kesalahan jenis JavaScript di Minicart, halaman Tampilan produk , dan halaman Checkout .

TypeError: $.widget is not a function
           $.widget('mage.priceBox')
           $.widget('mage.dataPost')

Bagaimana saya bisa memecahkan masalah ini?

Nikul
sumber
Sudahkah Anda menjalankan perintah deploy?
Rakesh Jesadiya
Ya saya menjalankan perintah deploy tetapi masih mendapatkan error.
Nikul
Anda harus terlebih dahulu menghapus konten folder pub / statis setelah Anda harus menjalankan perintah untuk digunakan
Rakesh Jesadiya
Hai Rakesh Perintah apa pun untuk menghapus pub / folder statis menggunakan perintah.
Nikul
Anda harus menghapus secara manual
Rakesh Jesadiya

Jawaban:

8

Saya memiliki masalah yang sama menggunakan Porto Theme. Dalam kasus saya terkadang jQuery dikenali, terkadang tidak. Sayangnya, saya tidak mengerti penyebabnya, tetapi saya menemukan solusinya.

Singkatnya: Gabungkan semua file javascript.

  1. Di Backend pergi ke:

Stores -> Configuration -> Advanced -> Developer -> JavaScript Settings

  1. Mengaktifkan:

    • Aktifkan Bundling JavaScript
    • Gabungkan File JavaScript
    • Perkecil File JavaScript (Opsional)
  2. Tidak disarankan untuk menyebarkan file statis

bin/magento setup:static-content:deploy

  1. Kosongkan cache di bawah System -> Cache Management

    • Di Additional Cache Management wilayah pilih TombolFlush CSS/Javascript Cache
    • Dan Flush Magento Cachesesudahnya

Sekarang kosongkan Cache di Browser dan muat ulang.

Untuk mengembangkan solusi ini tidak memuaskan, tetapi setidaknya untuk produktif, menggunakannya harus menjadi solusi kerja yang baik, tanpa perilaku yang tidak terduga.

Semoga ini bisa membantu ..

kebijaksanaan
sumber
itu membantu saya, terima kasih. Saya memiliki masalah yang sama
bourax
Saya hanya menyiram CSS / Javascript & Magento Cache, dan berhasil, tetapi jawaban Anda dapat membantu kasus lain! Dalam dev env. kita terikat untuk membiarkan optimasi JS dinonaktifkan, debugging menjadi sulit jika tidak, dan juga jarang menggunakan perintah deploy, refresh halaman memicu pembuatan file statis ini. Terima kasih !
medmek
Saya pikir ini ada hubungannya dengan requireejs-config.js ... kadang map: { '*': {- kadang digunakan, dan kadang-kadang paths: {...
Black
4

Saya memiliki masalah ini juga tetapi kemudian saya menemukan artikel ini: http://www.danjoseph.me/2016/09/16/magento-2-widget-not-function/

Dalam artikel itu ia menjelaskan bahwa jquery sedang dimuat untuk kedua kalinya pada halaman dan karenanya menimpa versi yang dimuat sebelumnya oleh magento. Bagi saya itu adalah skrip pemasaran yang juga memuat jquery karena suatu alasan. jQuery hanya boleh dimuat sekali di kepala oleh tag ini dan semua yang lain harus dihapus.

<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="jquery" src="http://seatup.local/pub/static/frontend/Seatup/theme/en_US/jquery.js"></script>

Cypher909
sumber
-4

Buka folder tema Anda dan temukan file berikut di folder Magento_Theme

default_head_blocks.xml

dan ganti

<script src="jquery.js" />

dengan

<remove src="jquery.js" />

Pastikan Anda membersihkan cache dan menyegarkan halaman.

Saya memiliki masalah yang sama dan menyelesaikannya menggunakan metode di atas.

Nausif
sumber
Melakukan ini, Anda menghapus jQuery. Memang benar bahwa memecahkan kesalahan yang dijelaskan pada pertanyaan tetapi sekarang hal-hal lain rusak misalnya terkait bootstrap. Uncaught Error: Bootstrap's JavaScript requires jQuery at bootstrap.min.js:6
slayerbleast
Menghapus jQuery bukan cara yang tepat untuk menangani ini. Itu saran yang buruk.
Cypher909