Glimmer-site-header.gjs:144 getBoundingClientRect Fehler nur bei aktiviertem Custom Plugin

Hallo,

Bei einer aktuellen Discourse-Version (Ember 6.6.0) erhalte ich diesen Fehler in der Browserkonsole, allerdings nur, wenn mein benutzerdefiniertes Plugin aktiviert ist:

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)
    ...

Was ich bisher unternommen habe:

  • Mit allen benutzerdefinierten Plugins deaktiviert → kein Fehler.
  • Mit nur meinem aktivierten Plugin (im Standard-Theme) → Fehler tritt auf.
  • Im Plugin nach d-header, site-header, glimmer-site-header, getBoundingClientRect gesucht:
    • Das Plugin greift nie in den Header ein; es fügt Komponenten nur über Konnektoren hinzu:
      • discovery-list-area/…
      • below-site-header/…
      • below-main-outlet/…
  • Versucht, im Plugin-Initializer defensiv ein Stub-.d-header-Element zu erstellen, falls keines existiert, aber der Fehler tritt trotzdem auf.
  • Auf Seiten, auf denen der Fehler ausgelöst wird, gibt document.querySelector('.d-header') ein Element zurück.

Fragen:

  1. Unter welchen Bedingungen kann glimmer-site-header dazu führen, dass element.getBoundingClientRect() für null aufgerufen wird?
  2. Gibt es etwas Besonderes bei der Verwendung des below-site-header-Konnektors oder beim Hinzufügen von Body-Klassen, das mit der neuen Header-Komponente interferieren könnte?
  3. Gibt es eine empfohlene Methode, wie Plugins sicher mit glimmer-site-header koexistieren können, damit dieser Null-Zugriff verhindert wird?

Jeder Hinweis oder bekannte Probleme in dieser Hinsicht wäre sehr hilfreich.

Ich weiß nicht, ob das Ihr Problem ist, aber anstatt von Connectors sollten Sie jetzt api.renderInOutlet verwenden. Ich finde das intuitiver und weniger fummelig.

1 „Gefällt mir“