您好,
在最近的 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/…
- 插件从不接触页眉;它仅通过连接器添加组件:
- 尝试在插件初始化程序中防御性地创建一个存根(stub)
.d-header元素(如果不存在),但错误仍然发生。 - 在触发错误的页面上,
document.querySelector('.d-header')返回一个元素。
问题:
- 在什么情况下
glimmer-site-header会调用element.getBoundingClientRect()时element为 null? - 使用
below-site-header连接器或添加 body 类是否有任何特殊之处可能干扰新的页眉组件? - 是否有推荐的方法让插件与
glimmer-site-header安全共存,以防止发生此 null 访问?
任何提示或关于此问题的已知问题都将非常有帮助。