Библиотеки JS Magento 2 иногда не загружаются - PullRequest
0 голосов
/ 04 июня 2019

В настоящее время мы работаем с экземпляром Magento 2.2.6. Иногда галерея продуктов ломается с ошибкой JS:

Uncaught TypeError: settings. $ ElementF.fotorama не является функцией

Это также происходит с другими библиотеками js на домашней странице и странице каталога. Иногда мы получаем ошибку

Uncaught TypeError: $ (...). CustomMenu не является функцией

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

Я уже пытался повторно развернуть статические ресурсы, включить и отключить статическую подпись, отключить все расширения, отключить все внутренние кэши и изменить свой файл requirejs-config.js на зависимость и shim jquery

var config = {
    deps: ['jquery'],
    map: {
        '*' : {
            'hello' : 'js/custom'
        }
    },
    'fotorama/fotorama': {
        deps: ['jquery']
    }
}

Эта проблема была опубликована несколько раз раньше, мы будем благодарны за любые советы.

1 Ответ

0 голосов
/ 05 июня 2019

К сожалению, массив зависимостей не гарантированно загружается по порядку.

Вы можете использовать shim в requireJS, что позволит вам определять зависимости между библиотеками и экспортировать глобальные переменные, которые можно использовать с другими библиотеками.

По существу в shim вы можете использовать свойство deps для определения библиотек, которые должны быть загружены перед использованием включенной библиотеки.

Что у вас естьсейчас близко, но это не в шим

Попробуйте это:

var config = {
    deps: ['jquery'],
    map: {
        '*' : {
            'hello' : 'js/custom'
        }
    },
    shim: {
        // export the variable 
        jquery: {
            exports: '$'
        },
        // fotorama depends on jquery
        'fotorama/fotorama': {
            deps: ['jquery']
        }
    }
}
...