Привет,
В последней версии Discourse (Ember 6.6.0) я получаю эту ошибку в консоли браузера, но только когда включён мой пользовательский плагин:
glimmer-site-header.gjs:144 Uncaught TypeError: Cannot read properties of null (reading 'getBoundingClientRect')
at recalculateHeaderOffset (glimmer-site-header.gjs:144)
at setupHeader (glimmer-site-header.gjs:212)
...
Что я уже предпринял:
• При отключённых всех пользовательских плагинах — ошибки нет.
• При включённом только моём плагине (на стандартной теме) — ошибка появляется.
• Поиск в плагине по d-header, site-header, glimmer-site-header, getBoundingClientRect:
◦ Плагин никогда не обращается к шапке; он лишь добавляет компоненты через коннекторы:
discovery-list-area/…
below-site-header/…
below-main-outlet/…
• Попробовал оборонительно создавать заглушку элемента .d-header в инициализаторе плагина, если его нет, но ошибка всё равно возникает.
• На страницах, где возникает ошибка, document.querySelector(‘.d-header’) возвращает элемент.
Вопросы:
- При каких условиях glimmer-site-header может вызвать element.getBoundingClientRect() для null?
- Есть ли что-то особенное в использовании коннектора below-site-header или добавлении классов к body, что могло бы помешать работе нового компонента шапки?
- Существует ли рекомендуемый способ, чтобы плагины могли безопасно сосуществовать с glimmer-site-header и избежать такого обращения к null?
Любые подсказки или информация об известных проблемах в этой области были бы очень полезны.