Ошибка «dt7948 is not defined» на десктопном сайте Discourse

Это продолжается уже какое-то время, и я не могу найти способ исправить это.

  1. Откройте наш (частный) сайт Discourse в браузере на компьютере.
  2. Появляется белый экран.
  3. Проверьте консоль и увидите следующие ошибки:
> Uncaught ReferenceError: dt7948 is not defined
>     at number-field.js:10:1
>     at <static_initializer> (number-field.js:10:1)
>     at 65553 (number-field.js:10:1)
>     at n (image-controls.js:109:1)
>     at 23387 (number-field.js:10:1)
>     at n (image-controls.js:109:1)
>     at 54732 (number-field.js:10:1)
>     at n (image-controls.js:109:1)
>     at s.callback (chunk.aa0584e1bdd0fed47ca6.d41d8cd9.js:1:401818)
>     at s.exports (loader.js:106:1) Понять эту ошибку
> jam-console-devtools.js:1 ℹ️ Discourse v3.4.0.beta1-dev — https://github.com/discourse/discourse/commits/335ab115b3 — Ember v5.5.0
> number-field.js:10 Uncaught (in promise) ReferenceError: Cannot access 'm' before initialization
>     at Module.default (number-field.js:10:1)
>     at c._extractDefaultExport (user-status-bubble.js:11:1)
>     at c.resolveOther (user-status-bubble.js:11:1)
>     at c.resolve (user-status-bubble.js:11:1)
>     at index.js:742:1
>     at f.resolve (index.js:523:1)
>     at f.resolve (index.js:525:1)
>     at o (index.js:237:1)
>     at i.factoryFor (index.js:184:1)
>     at u.factoryFor (container_proxy.js:32:1)
>     at index.js:4343:1
>     at index.js:4350:1
>     at sr.lookupComponent (index.js:4471:1)
>     at opcode-compiler.js:188:1
>     at ie (opcode-compiler.js:2032:1)
>     at u (opcode-compiler.js:1973:1)
>     at opcode-compiler.js:1638:1
>     at _.compile (opcode-compiler.js:410:1)
>     at re (opcode-compiler.js:1976:1)
>     at opcode-compiler.js:1955:1
>     at ee.compile (opcode-compiler.js:1938:1)
>     at Wt.compile (runtime.js:4796:1)
>     at Object.evaluate (runtime.js:1978:1)
>     at Object.evaluate (runtime.js:1052:1)
>     at It.evaluateSyscall (runtime.js:4204:1)
>     at It.evaluateInner (runtime.js:4175:1)
>     at It.evaluateOuter (runtime.js:4168:1)
>     at Wt.next (runtime.js:4999:1)
>     at Wt._execute (runtime.js:4986:1)
>     at Wt.execute (runtime.js:4979:1)
>     at Qt.sync (runtime.js:5046:1)
>     at hr.render (index.js:4672:1)
>     at index.js:4934:1
>     at Nt (runtime.js:4080:1)
>     at gr._renderRoots (index.js:4916:1)
>     at gr._renderRootsTransaction (index.js:4960:1)
>     at gr._renderRoot (index.js:4905:1)
>     at gr._appendDefinition (index.js:4830:1)
>     at gr.appendOutletView (index.js:4820:1)
>     at invoke (backburner.js.js:282:1)
>     at h.flush (backburner.js.js:197:1)
>     at p.flush (backburner.js.js:358:1)
>     at B._end (backburner.js.js:798:1)
>     at B._boundAutorunEnd (backburner.js.js:523:1)

Здесь есть ссылка на dt7948: discourse/spec/lib/discourse_js_processor_spec.rb at 66a23180d4655c0d0312e0a6485b5dbad291952a · discourse/discourse · GitHub

Я предпринял следующие действия, но без успеха:

  1. Отключил все плагины через containers/app.yml.
  2. Проверил автоматическую минификацию Cloudflare (она отключена уже несколько лет).
  3. Выполнил несколько полных обновлений.

Запуск сайта в безопасном режиме — единственное, что работает на компьютере; на мобильном устройстве всё работает нормально.

Вот мои плагины из app.yml:

          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-ai.git
##          - git clone https://github.com/procourse/procourse-memberships.git
          - git clone https://github.com/gdpelican/retort.git
##          - git clone https://github.com/discourse/discourse-chat-integration.git
##          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-subscriptions.git

Как я могу исправить эту проблему?

Если безопасный режим работает корректно, проверьте также установленные темы, а не только плагины. (<site-url>/?safe_mode=no_themes).

Можете ли вы подтвердить, что проблема не в теме?

Отличный совет!

Да, у нас была тема, и да, добавление /?safe_mode=no_themes позволяет ей загружаться корректно.

Это очень помогло в поиске и устранении неполадок, и я себя ругаю за то, что упустил это!

Точно сказать сложно, не видя код вашей темы. Однако мы уже сталкивались с подобным, если в вашей теме используется тег <script>, который затем загружает код Discourse через require().

Если вы измените его на <script type="text/discourse-plugin" version="0.8">, то загрузка произойдёт немного позже, и проблема с dt7948 должна исчезнуть.

Я думаю, что проблема шире: наш кастомный шаблон создан на основе Simple-тема пятилетней давности.

Мы планируем полную модернизацию шаблона.

Огромная благодарность @nat и @david за то, что указали мне верное направление.

Сообщу, как продвинутся дела.

Мы переделали тему, используя последнюю версию «Simple».

Всё в порядке.