Форма Adobe AEM с пользовательскими событиями javascript, генерирующими guideLib, guide.js, guideBridge или guideRuntime, не определена или ... не является функцией - PullRequest
0 голосов
/ 02 мая 2018

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

Получаете ли вы всевозможные странные "this.getOnOffValueFromModelValue не виды функций" ошибок из guideRuntime.js, guide.js или guidelib - или других библиотек веб-интерфейса Adobe, которые вы не контролируете?

Они могут не относиться к вам напрямую, но если они определенно продолжают читать:

  1. Используете ли вы веб-пакет и размещаете ли пользовательский код на странице в другом месте (возможно, из-за хитрого использования данных или чего-то еще)?

  2. Использует ли ваш проект lodash? или, может быть, другая библиотека, которая использует глобальную переменную "_"?

  3. Или, возможно, jQuery? или другая библиотека интерфейса?

Тогда вы можете задавать такие вопросы, как:

  • Почему моя форма не работает должным образом?
  • Почему некоторые элементы в форме просто не работают?
  • Некоторые правила просто не работают ... почему бы и нет, как я могу их исправить?

О, я накормлю тебя, птенцы.

(может кто-нибудь с более высокой репутацией добавить теги adobe-form, aem-form, пожалуйста)

1 Ответ

0 голосов
/ 02 мая 2018

TLDR:

Если вы используете Webpack, добавьте это в правила вашего модуля:

module: {
  rules: [
    { parser: { amd: false } }
 // ... your other rules
  ]
}

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


Объяснение, которое может быть применимо, даже если вы не используете веб-пакет, которое может привести вас в правильном направлении:

Клиентские библиотеки Adobe (такие как guide.js, guideRuntime и т. П.) Не особенно хороши для внедрения зависимостей. Их код сильно пропускает глобальные переменные. Например (см. Рисунок ниже) они часто используют подчеркивание _.each. если вы используете lodash, сигнатуры функций различны - подчеркивание 'позволяет вам определять контекст "this" в качестве третьего параметра, тогда как lodash - нет.

Итак, в нашем случае наш lodash перезаписывал их нижнее подчеркивание, вызывая кучу странных проблем ... ДАЖЕ, КОГДА мы нигде не объявляли lodash глобально. WEBPACK БЫЛ определяющим во всем мире lodash

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

adobe guideruntime not injecting underscore properly

...