Bắt TypeError: $ .widget không phải là một chức năng Magento 2


9

Tôi đang gặp lỗi loại JavaScript trong Minicart, trang xem sản phẩmtrang Checkout .

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

Làm sao tôi có thể giải quyết việc này?


Bạn đã chạy lệnh triển khai chưa?
Rakesh Jesadiya

Có tôi đang chạy lệnh triển khai nhưng vẫn nhận được lỗi.
Nikul

trước tiên bạn phải xóa nội dung thư mục pub / static sau khi bạn phải chạy lệnh để triển khai
Rakesh Jesadiya

Hi Rakesh Bất kỳ lệnh nào để loại bỏ thư mục pub / static bằng lệnh.
Nikul

bạn phải xóa thủ công
Rakesh Jesadiya

Câu trả lời:


8

Tôi đã có cùng một vấn đề khi sử dụng Porto Theme. Trong trường hợp của tôi đôi khi jQuery được công nhận, đôi khi không. Thật không may, tôi không hiểu nguyên nhân, nhưng tôi đã tìm ra giải pháp.

Tóm lại: Hợp nhất tất cả các tệp javascript.

  1. Trong phần cuối, hãy truy cập:

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

  1. Kích hoạt:

    • Kích hoạt gói JavaScript
    • Hợp nhất các tệp JavaScript
    • Giảm thiểu các tệp JavaScript (Tùy chọn)
  2. Không cần thiết để triển khai các tệp tĩnh

bin/magento setup:static-content:deploy

  1. Xóa bộ nhớ cache bên dưới System -> Cache Management

    • Trong Additional Cache Managementvùng chọn NútFlush CSS/Javascript Cache
    • Flush Magento Cachesau đó

Bây giờ xóa Cache trong Trình duyệt và tải lại.

Để phát triển giải pháp này không thỏa mãn, nhưng ít nhất là cho năng suất, sử dụng nó phải là một giải pháp làm việc tốt, không có hành vi khó lường.

Hy vọng nó giúp..


Điều đó đã giúp tôi, cảm ơn bạn. Tôi đã có cùng một vấn đề
bourax

Tôi chỉ thực hiện xóa CSS / Javascript & Magento Cache và đã hoạt động, nhưng câu trả lời của bạn có thể giúp các trường hợp khác! Trong nhà phát triển chúng tôi buộc phải để tối ưu hóa JS bị vô hiệu hóa, việc gỡ lỗi trở nên khó khăn và cũng hiếm khi sử dụng lệnh triển khai, làm mới trang kích hoạt việc tạo tệp tĩnh này. Cảm ơn bạn !
medmek

Tôi nghĩ rằng điều này có liên quan đến allowjs-config.js ... đôi khi map: { '*': {được sử dụng và đôi khi paths: {...
Đen

4

Tôi cũng có vấn đề này nhưng sau đó tôi đã chạy qua bài viết này: http://www.danjoseph.me/2016/09/16/magento-2-widget-not-feft/

Trong bài viết, ông giải thích rằng jquery đã được tải lần thứ hai trên trang và do đó ghi đè lên phiên bản được tải bởi magento trước đó. Đối với tôi đó là một kịch bản tiếp thị cũng đang tải jquery vì một số lý do. jQuery chỉ nên được tải một lần trong đầu bởi thẻ này và tất cả những thứ khác sẽ bị xóa.

<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>


-4

Chuyển đến thư mục chủ đề của bạn và tìm tệp sau trong thư mục Magento_Theme

default_head_blocks.xml

và thay thế

<script src="jquery.js" />

với

<remove src="jquery.js" />

Hãy chắc chắn rằng bạn làm sạch bộ nhớ cache và làm mới trang.

Tôi đã có cùng một vấn đề và đã giải quyết nó bằng phương pháp trên.


Làm điều này bạn đang loại bỏ jQuery. Đúng là đã giải quyết được lỗi được mô tả trong câu hỏi nhưng bây giờ những thứ khác bị hỏng chẳng hạn liên quan đến bootstrap. Uncaught Error: Bootstrap's JavaScript requires jQuery at bootstrap.min.js:6
slayerbleast

Xóa jQuery không phải là cách chính xác để xử lý việc này. Đó là lời khuyên tồi.
Cypher909
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.