Magento 2 customer-data.js: 90: 23 [объект Объект]

11

Я использую Magento 2.2 с темой Porto и получаю [object Object]ошибку javascript в customer-data.jsстроке 90 в консоли после входа в магазин и обновления страницы или перехода на другую страницу.

Я проверил это в Firefox, Chrome, IE 11 и Edge, и оно появляется только в Firefox (браузер, который я в основном использую).

Это не вызывает каких-либо серьезных проблем (не так далеко, как я вижу), но я хотел бы решить эту проблему.

объект Ошибка объекта

строка, где происходит ошибка

Строка 90 из customer-data.jsфайла: "throw new Error(jqXHR);".

Внутри объекта jqXHR находится ответное сообщение JSON:

{"message": "источник раздела" paypal-billing-Agreement \ "не поддерживается"}

Я видел несколько предложений, но большинство из них касалось очистки кеша и статических файлов.

Я пытался: очистить кэш Firefox и куки, очистить статические файлы Magento, кэш и кэш-память, но пока ничего не получалось ...

И я не совсем уверен, что еще делать ... любая помощь будет оценена.

Редактировать / Решение

Причиной ошибки было то, что я отключил модуль Paypal, но не очистил локальный / кэш браузера.

Внутри этого кэша был определенный вызов к модулю PayPal, который не мог быть обработан, поэтому он возвратил ошибку JS, подобную этой.

Очистка этого кэша устранила проблему.

Лез
источник
Сначала проверьте, что внутри объекта jqXHR. Метод конструкции класса Error ожидал строковое сообщение (или Object с toStringметодом).
Сергей Учухлебау
@SiarheyUchukhlebau Я редактировал вопрос с содержанием jqXHR.
Лез
где вы нашли JQXHR Oject?
krybbio
@krybbio Это можно увидеть во время отладки в строке 90 файла customer-data.js. Вы также можете увидеть его в отладчике браузера на вкладке сети (имя зависит от браузера) -> вы увидите «400 кодов ошибки - неправильный запрос», а внутри запроса вы увидите URL запроса и ответное сообщение.
Лез

Ответы:

39

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

Я впервые заметил, что эта ошибка появляется при переключении с клиентской стороны на серверную компиляцию в Stores->Configuration->Advanced->Developer->Frontend Development Workflow

Затем я решил, что customer-data.jsиспользует localStorage в самом браузере для хранения различной информации, поэтому вы можете очистить кэш Magento все, что захотите, и у вас все еще будут проблемы.

TLDR:

Для исправления в Google Chrome нажмите F12, чтобы открыть панель инструментов разработчика, а затем выберите вкладку «Приложение». Очистите локальное хранилище, хранилище сеансов и файлы cookie. Перезагрузите страницу и все должно быть хорошо. Вы должны будете сделать это на своей странице администратора.

Предоставлено: https://github.com/magento/magento2/issues/6410#issuecomment-243704461.

RLTcode
источник
5
Как это исправить для всех пользователей магазина? Я вижу, что многие пользователи видят эту ошибку в новой реликвии, и я думаю, что они не очистят свое локальное хранилище (но они, вероятно, просто покинут страницу).
bpoiss
Спасибо за этот ответ - это спасло меня много часов :)
artwoz
Я тоже получил эту ошибку, оказалось, что это вызвано тем, что заголовки уже отправили ошибку другому модулю. Это помогает добавить файл console.log (jqXHR) непосредственно перед выдачей ошибки. См. Также magento.stackexchange.com/questions/198333/… внизу
Изольда
Я попробовал все те вещи, которые ты сказал, но та же проблема. screencast.com/t/XEueQ00Foqs3
Пратик Мехта
К счастью, нашел это, прежде чем потратить много часов, в какой-то момент я пытался сделать недействительным раздел с ошибками, и это было кешировано.
Джоэл Дейви
1

Эта ошибка говорит о том, что исходные данные не указаны в sectionSourceMapрасположенном в Magento\Customer\CustomerData\SectionPoolклассе. paypal-billing-agreementДанные определены в файле vendor/magento/module-paypal/etc/frontend/di.xml:

<type name="Magento\Customer\CustomerData\SectionPool">
    <arguments>
        <argument name="sectionSourceMap" xsi:type="array">
            <item name="paypal-billing-agreement" xsi:type="string">Magento\Paypal\CustomerData\BillingAgreement</item>
        </argument>
    </arguments>
</type>

Таким образом, возможно, модуль PayPal был отключен в магазине, или какой-то сторонний модуль отключил его не по назначению.

Чтобы устранить эту проблему, откройте файл vendor/magento/module-customer/CustomerData/SectionPool.phpи проверьте, какие разделы загружаются в getSectionsDataметоде. Кроме того, вы можете попытаться вызвать метод getSectionsData(['paypal-billing-agreement'])где-нибудь из пользовательского кода и пошагово проверить, почему эти данные не загружаются.

Сергей Учухлебау
источник
1
Кажется, у меня отключен модуль Paypal в app / etc / config.php, но он не был отключен «правильным образом», поэтому он вызвал эту проблему. Спасибо за предложения!
Лез
@Lez Я рад помочь тебе
Сергей Учухлебау
1

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

введите описание изображения здесь

Поэтому я выполнил следующий запрос в БД, чтобы удалить все элементы цитаты из моей учетной записи пользователя:

DELETE FROM quote WHERE customer_email = 'my.user.email@example.com';

После этого проблема ушла :)

падуб
источник
0

Пожалуйста, удалите записи "Porto Theme" из таблицы "theme". Записи будут автоматически созданы снова. И переназначить сайты с этой темой Порту снова и проверить.

Sathya
источник