reopenWidget lanza un error

Estoy tratando de entender reopenWidget() de la Guía para principiantes para desarrollar temas de Discourse y cuando intento crear un componente de tema con el fragmento de ejemplo home-logo, obtengo Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'offsetHeight') y rompe el diseño de la página. ¿Ha cambiado algo en la forma de usar reopenWidget o me estoy perdiendo algo?

1 me gusta

¿Te importaría compartir el fragmento de código con el que tienes problemas?

2 Me gusta

Es solo esto:

<script type="text/discourse-plugin" version="0.8.13">
api.reopenWidget("home-logo", {
  logo() {
    const { siteSettings } = this,
      { iconNode } = require("discourse/helpers/fa-icon-node"),
      h = require("virtual-dom").h,
      altLogo = settings.Alternative_logo_url,
      altLogoSmall = settings.Alternative_small_logo_url,
      mobileView = this.site.mobileView,
      mobileLogoUrl = siteSettings.mobile_logo_url || "",
      showMobileLogo = mobileView && mobileLogoUrl.length > 0;
    (logoUrl = altLogo || ""),
    (title = siteSettings.title);
    if (!mobileView && this.attrs.minimized) {
      const logoSmallUrl = altLogoSmall || "";
      if (logoSmallUrl.length) {
        return h("img#site-logo.logo-small", {
          key: "logo-small",
          attributes: { src: logoSmallUrl, width: 33, height: 33, alt: title }
        });
      } else {
        return iconNode("home");
      }
    } else if (showMobileLogo) {
      return h("img#site-logo.logo-big", {
        key: "logo-mobile",
        attributes: { src: mobileLogoUrl, alt: title }
      });
    } else if (logoUrl.length) {
      return h("img#site-logo.logo-big", {
        key: "logo-big",
        attributes: { src: logoUrl, alt: title }
      });
    } else {
      return h("h1#site-text-logo.text-logo", { key: "logo-text" }, title);
    }
  }
});
</script>

Que copié directamente de la guía para principiantes (Beginner’s Guide) en la sección reopenWidget sin cambiar nada, en un nuevo componente de tema sin nada más. (Y verifiqué dos veces que puse el código en Header).

Tengo algunos otros componentes de tema instalados, pero nada que toque home-logo. Estoy en un hosting básico aquí, si eso marca la diferencia. Pensé que podría ser porque no tenía un logo oscuro subido, pero todavía sucede incluso con un logo oscuro subido.

1 me gusta

Lamentablemente, las cosas se mueven rápido aquí.

El problema básico es probablemente que has copiado el código de la guía, en lugar de seguir las instrucciones.

Esta es una comparación del código que acabas de compartir con el código fuente actual:

¡Es decir, muy diferente! (¡y por lo tanto, es probable que falle!)

Lo que necesitas hacer (según las instrucciones) es ir al código fuente y copiar el código actual y cambiarlo para adaptarlo a tus necesidades.

En otras palabras, el código de la guía está desactualizado, si no las instrucciones, que siguen siendo válidas.

2 Me gusta

¡Entendido, gracias! Es la primera vez que trabajo con Discourse o Ember, así que todavía me estoy familiarizando con ello. Había intentado usar reopenWidget con otra función copiada de la fuente actual y no pude hacer que funcionara, pero seguiré experimentando un poco más.