Получение TypeError: $ .widget не является функцией Magento 2


9

Я получаю ошибку типа JavaScript в Minicart, странице просмотра товаров и Checkout странице .

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

Как я могу решить это?


Вы запускаете команду развертывания?
Ракеш Джесадия,

Да, я запускаю команду развертывания, но все еще получаю ошибку.
Никуль

сначала вы должны удалить содержимое паба / статической папки после того, как запустите команду для развертывания
Ракеш Джесадия,

Привет Ракеш Любая команда, чтобы удалить паб / статическую папку с помощью команды.
Никуль

Вы должны удалить вручную
Ракеш Джесадия

Ответы:


8

У меня была та же проблема с использованием темы Порту. В моем случае иногда jQuery распознавался, иногда нет. К сожалению, я не понял причину, но я нашел решение.

Короче говоря: объединить все файлы JavaScript.

  1. В Backend перейдите по ссылке:

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

  1. Активация:

    • Включить связывание JavaScript
    • Объединить файлы JavaScript
    • Сократить файлы JavaScript (необязательно)
  2. Рекомендуется развернуть статические файлы

bin/magento setup:static-content:deploy

  1. Очистить кеш под System -> Cache Management

    • В Additional Cache Managementрегионе выберите кнопкуFlush CSS/Javascript Cache
    • И Flush Magento Cacheпотом

Теперь очистите кэш в браузере и перезагрузите.

Для разработки это решение не является удовлетворительным, но, по крайней мере, для продуктивного, использовать его должно быть хорошим рабочим решением, без непредсказуемого поведения.

Надеюсь, поможет..


это помогло мне, спасибо. У меня была такая же проблема
бура

Я только сделал сброс CSS / Javascript и Magento Cache и работал, но ваш ответ может помочь в других случаях! В dev env. мы обязаны оставить оптимизацию JS отключенной, в противном случае отладка становится сложной, а также редко использовать команду deploy, обновление страницы запускает это статическое генерирование файла. Спасибо !
medmek

Я думаю, что это как-то связано с requirejs-config.js ... иногда map: { '*': {используется, а иногда paths: {...
Black

4

У меня тоже была эта проблема, но потом я наткнулся на эту статью: http://www.danjoseph.me/2016/09/16/magento-2-widget-not-function/

В этой статье он объясняет, что jquery загружался второй раз на странице и поэтому перезаписывал версию, загруженную ранее magento. Для меня это был маркетинговый скрипт, который по какой-то причине тоже загружал jquery. Этот тег должен загружаться только один раз в голову этим тегом, а все остальные должны быть удалены.

<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

Перейдите в папку вашей темы и найдите следующий файл в папке Magento_Theme.

default_head_blocks.xml

и заменить

<script src="jquery.js" />

с

<remove src="jquery.js" />

Обязательно очистите кеш и обновите страницу.

У меня была та же проблема, и я получил ее, используя вышеуказанный метод.


Делая это, вы удаляете jQuery. Это правда, что решает ошибку, описанную в вопросе, но теперь другие вещи не работают, например, связанные с начальной загрузкой. Uncaught Error: Bootstrap's JavaScript requires jQuery at bootstrap.min.js:6
Slayerbleast

Удаление jQuery не является правильным способом справиться с этим. Это плохой совет.
Cypher909
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.