Проблема с DiscoTOC: TypeError: _offsetCalculator.headerOffset не является функцией

Уважаемая команда Discourse, уважаемый @Johani,

огромное спасибо за отличное дополнение Discourse DiscoTOC - automatic table of contents.

Вчера пользователь сообщил, что навигация по оглавлению перестала работать на community.hiveeyes.org; пример можно найти здесь [1]. Экземпляр работает под управлением Discourse 2.8.0.beta10 и последней версии DiscoTOC, обновлённой через менеджер компонентов темы.

На двух других экземплярах Discourse всё работает корректно:

  • 2.8.0.beta10 (self-hosted), DiscoTOC отстаёт на 17 коммитов, на 5b051e18 [2]
  • 2.9.0.beta2 (бизнес-план), DiscoTOC отстаёт на 1 коммит, на 9933031 [3]

Как вы думаете, причина может быть в одном из других плагинов, установленных на нашей системе [4]? До сих пор мы никогда не сталкивались с подобными проблемами с DiscoTOC.

Заранее благодарим вас за уделённое время и внимание к этому вопросу. Мы склонны полагать, что проблема кроется в чём-то незначительном с нашей стороны, поскольку нам пока не удалось найти аналогичных сообщений от других пользователей. С другой стороны, решение этой проблемы может помочь и другим, столкнувшимся с похожими трудностями.

С наилучшими пожеланиями,
Андреас.


Ошибка в консоли браузера Firefox: Uncaught TypeError: _offsetCalculator.headerOffset is not a function в функции updateTOCSidebar.



  1. Installation von Saraswati auf SBC-Systemen (Debian), mit Upload per rsync oder FTP - BOB-Anleitungen - Hiveeyes ↩︎

  2. Panodata Map Panel for Grafana - The workbench - Panodata Community ↩︎

  3. Interpolating missing time-series values - Tutorials - CrateDB Community ↩︎

  4. Установленные плагины.

    ↩︎
1 лайк

В мобильной версии сноска плагина читается немного трудно. Я добавлю сюда список, чтобы было заметнее. :+1: (хотя я не вижу очевидных конфликтов, но кто-то другой может что-то заметить)

Установленные плагины:

1 лайк

Снова здравствуйте,

при переходе по ссылке на updateTOCSidebar:210 Firefox показывает этот код

210: var distance = Math.abs(_domUtils.default.offset(heading).top - (0, _offsetCalculator.headerOffset)() - window.scrollY);

с индикатором, что может быть ошибка синтаксиса

image

в то время как исходный код находится здесь:

Как вы думаете, есть ли небольшая вероятность, что это могут быть проблемы с адаптацией в связи с REFACTOR: General component overhaul by pmusaraj · Pull Request #19 · discourse/DiscoTOC · GitHub, @pmusaraj?

Это можно проверить на нашем публичном экземпляре Discourse, например на странице Installation von Saraswati auf SBC-Systemen (Debian), mit Upload per rsync oder FTP - BOB-Anleitungen - Hiveeyes.

С наилучшими пожеланиями,
Андреас.

/cc @eviltrout, @cvx, @j.jaffeux

1 лайк

Я думаю, что headerOffset, используемый DiscoTOC с момента рефакторинга 18 января, появляется в app/assets/javascripts/discourse/app/lib/offset-calculator.js в этом коммите 7 января, между версиями 2.8.0.beta10 (21 декабря) и 2.8.0.beta11 (13 января).

2 лайка

Значит, нам либо нужно обновить Discourse, либо откатить DiscoTOC до версии до рефакторинга, верно? Спасибо!

1 лайк

Да.

Прежде чем сообщать об ошибке, всегда стоит проверить, сохраняется ли она в последней версии {tests-passed|stable}.

5 лайков

Конечно, большое спасибо!

Но у меня также есть ещё одна точка зрения на сообщение о проблемах, которой я хотел бы поделиться в этом контексте: помогать поисковым системам, чтобы предоставить другим пользователям, столкнувшимся с той же ошибкой, руководство по её устранению и смягчению последствий.

Например: Эй, что здесь происходит? «Uncaught TypeError» в консоли браузера? Давайте сразу вставлю это в строку поиска. Ах, точно, вот оно — я понял, просто обновите Discourse или откатите DiscoTOC. Спасибо, пока.


Огромное спасибо за вашу быструю поддержку, Ричард! Очень ценю это.

Снова здравствуйте,

мы хотели лишь сообщить, что после обновления до версии Discourse 2.9.0.beta2 всё снова в порядке.

Большое спасибо и с наилучшими пожеланиями,
Андреас.

2 лайка