Плагин User Notes ломает мой сайт

Я только что обновил два поддерживаемых мной сайта, и в обоих случаях столкнулся с проблемами, которые привели меня к плагину user-notes.

На одном из сайтов вчера возникла «белая смерть» — сайт был полностью невидим, за исключением режима безопасной загрузки. Я закомментировал плагин в app.yml, пересобрал проект, и сайт снова заработал.

На другом сайте исчезла только верхняя навигация с логотипом, гамбургер-меню и т. д., а в консоли появилась ошибка — см. ниже. Отключение плагина через админ-панель восстановило работу.

vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:12 Uncaught (in promise) Error: Could not find module `discourse/plugins/discourse-user-notes/discourse-user-notes/connectors/user-profile-controls/show-notes-on-profile` imported from `discourse/plugins/discourse-staff-notes/discourse-user-notes/connectors/admin-user-controls-after/add-user-notes-button`
    at vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:12:31
    at c (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:12:96)
    at s.findDeps (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:24:158)
    at c (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:12:152)
    at requireModule (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:6:60)
    at discourse-aebc0fdc441730b0e5f42bf52a5341cffca664e9a40a015a846b1b64f61dd773.js:4420:78
    at discourse-aebc0fdc441730b0e5f42bf52a5341cffca664e9a40a015a846b1b64f61dd773.js:4420:1
    at Array.forEach (<anonymous>)
    at a (discourse-aebc0fdc441730b0e5f42bf52a5341cffca664e9a40a015a846b1b64f61dd773.js:4417:32)
    at u (discourse-aebc0fdc441730b0e5f42bf52a5341cffca664e9a40a015a846b1b64f61dd773.js:4420:39)
    at discourse-aebc0fdc441730b0e5f42bf52a5341cffca664e9a40a015a846b1b64f61dd773.js:4424:261
    at discourse-aebc0fdc441730b0e5f42bf52a5341cffca664e9a40a015a846b1b64f61dd773.js:4420:1
    at Array.forEach (<anonymous>)
    at a (discourse-aebc0fdc441730b0e5f42bf52a5341cffca664e9a40a015a846b1b64f61dd773.js:4417:32)
    at c (discourse-aebc0fdc441730b0e5f42bf52a5341cffca664e9a40a015a846b1b64f61dd773.js:4424:64)
    at e.renderedConnectorsFor (discourse-aebc0fdc441730b0e5f42bf52a5341cffca664e9a40a015a846b1b64f61dd773.js:4414:65)
    at e.init (discourse-aebc0fdc441730b0e5f42bf52a5341cffca664e9a40a015a846b1b64f61dd773.js:1196:50)
    at e.r [as init] (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:2090:9)
    at g (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:2007:98)
    at e.create (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:2015:108)
    at g.create (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:604:93)
    at ye.create (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:747:9)
    at Object.evaluate (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3299:9)
    at Object.evaluate (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3134:13)
    at Dt.evaluateSyscall (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3435:61)
    at Dt.evaluateInner (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3429:138)
    at Dt.evaluateOuter (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3429:59)
    at Wt.next (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3490:26)
    at Wt._execute (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3489:25)
    at Wt.execute (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3488:298)
    at Yt.sync (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3492:86)
    at Er.render (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:1061:546)
    at vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:1087:31
    at It (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3425:5)
    at Rr._renderRoots (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:1086:34)
    at Rr._renderRootsTransaction (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:1091:10)
    at Rr._renderRoot (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:1085:50)
    at Rr._appendDefinition (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:1080:6)
    at Rr.appendOutletView (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:1078:6)
    at invoke (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3834:139)
    at p.flush (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3826:74)
    at h.flush (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3839:207)
    at q._end (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3896:9)
    at _boundAutorunEnd (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3848:605)
discourse-aebc0fdc441730b0e5f42bf52a5341cffca664e9a40a015a846b1b64f61dd773.js:5224 Uncaught (in promise) TypeError: Cannot read properties of null (reading 'addEventListener')
    at discourse-aebc0fdc441730b0e5f42bf52a5341cffca664e9a40a015a846b1b64f61dd773.js:5224:291
    at Array.forEach (<anonymous>)
    at e.didInsertElement (discourse-aebc0fdc441730b0e5f42bf52a5341cffca664e9a40a015a846b1b64f61dd773.js:5224:253)
    at e.r [as didInsertElement] (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:2090:9)
    at e.trigger (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:2233:34)
    at e.r [as trigger] (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:2090:9)
    at ye.didCreate (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:761:32)
    at Nt.commit (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3414:3)
    at Mt.commit (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3423:17)
    at It (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3425:19)
    at Rr._renderRoots (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:1086:34)
    at Rr._renderRootsTransaction (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:1091:10)
    at Rr._revalidate (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:1091:490)
    at invoke (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3834:129)
    at p.flush (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3826:74)
    at h.flush (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3839:207)
    at q._end (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3896:9)
    at _boundAutorunEnd (vendor-fded770671ed964514369b968313e4ab522dc911c142420bcc24ae31cf85252f.js:3848:605)

Я думал, что это установлено и на Meta? Есть ли здесь воспроизведение?

Я сообщу вам, что произойдет, когда я обновлю свой тестовый сайт с этой функцией…

РЕДАКТИРОВАНИЕ: Перед обновлением я добавил несколько заметок пользователей, чтобы проверить, не вызовет ли это каких-либо проблем, но проблем не возникло. Всё работало отлично.

У меня есть этот плагин на тестовом сайте (80fce67150), а также здесь, на Meta, и всё, кажется, работает нормально?

Если быть точным, кнопка «Добавить заметку о пользователе» отображается только в некоторых карточках пользователей, но не во всех.

Я думаю, что она появляется только для тех, у кого когда-либо была прикреплена заметка о пользователе. У тех, у кого её никогда не было, она, похоже, не генерируется.

@tobiaseigen Вы уже использовали заметки о пользователях на каком-либо из этих сайтов?

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

Мне кажется, что проблема может быть в том, что заметок не было, и система с трудом определяла, что делать, поскольку не было предыдущего опыта для следования:


`Uncaught (in promise) Error: Could not find module `discourse/plugins/discourse-user-notes/discourse-user-notes/connectors/user-profile-controls/show-notes-on-profile` imported from `discourse/plugins/discourse-staff-notes/discourse-user-notes/connectors/admin-user-controls-after/add-user-notes-button`
    

И, во-вторых,

Cannot read properties of null

Я почти уверен, что иконка :memo: обычно отображается на карточке любого пользователя, так что здесь что-то не так.

Хм… страница «белого экрана смерти» показывает это в настройках компонента пользовательской темы. Возможно, следующим шагом для меня будет отключение этого компонента темы, а затем повторное включение заметок пользователей.

Извините – использование CSS-селекторов ember или .ember-view не допускается, так как эти имена генерируются динамически во время выполнения и со временем изменятся, что в итоге приведёт к неработоспособности CSS. Попробуйте другой селектор.

Если я не неправильно понял вашу мысль… я не думаю, что это верно. Я видел иконку :memo: только тогда, когда для конкретного пользователя была создана заметка. Я никогда не видел, чтобы она применялась ко всем пользователям просто после включения плагина.

Значок рядом с именем пользователя в постах появляется только при наличии заметки. Но мне казалось, что тот, что в карточке пользователя, — это способ легко добавить их.

Хотя, возможно, я что-то путаю. :slightly_smiling_face:

Ах… да, я думаю, что мы говорим об интерфейсе в двух разных местах: на странице профиля пользователя кнопка должна всегда присутствовать, когда плагин включён, вот так:

2022-08-26_jammy_user_notes

А появляться рядом с именем в теме только если у пользователя есть заметка:

И кто вообще использует слово «thusly» в предложении? Вот этот парень.

Моя ошибка, я должен был приложить скриншот тоже. :slight_smile: Я имею в виду :memo: на карточке пользователя:

Она отображается только у некоторых, а не у всех, хотя мне казалось, что раньше она была у каждого.

Ах… мы приближаемся. :wink:

Я видел это только тогда, когда у пользователя есть связанная заметка. Так я привык, но мне нужно посмотреть код, чтобы понять, так ли это задумано.

У меня та же проблема с момента пересборки образа Docker.

В консоли разработчика Chrome на главной странице сайта постоянно появляется следующее:

Uncaught (in promise) Error: Could not find module `discourse/plugins/discourse-user-notes/discourse-user-notes/connectors/user-profile-controls/show-notes-on-profile` imported from `discourse/plugins/discourse-staff-notes/discourse-user-notes/connectors/admin-user-controls-after/add-user-notes-button`
    at loader.js:247:1
    at c (loader.js:258:1)
    at s.findDeps (loader.js:168:1)
    at c (loader.js:262:1)
    at requireModule (loader.js:24:1)
    at plugin-connectors.js:65:1
    at plugin-connectors.js:51:1
    at Array.forEach (<anonymous>)
    at a (plugin-connectors.js:46:1)
    at u (plugin-connectors.js:64:1)
    at plugin-connectors.js:93:1
    at plugin-connectors.js:51:1
    at Array.forEach (<anonymous>)
    at a (plugin-connectors.js:46:1)
    at c (plugin-connectors.js:84:1)
    at e.renderedConnectorsFor (plugin-connectors.js:107:1)
    at e.init (plugin-outlet.js:53:1)
    at e.r [as init] (index.js:449:1)
    at g (core_object.js:149:1)
    at e.create (core_object.js:685:1)
    at g.create (index.js:551:1)
    at ye.create (index.js:1054:1)
    at Object.evaluate (runtime.js:3301:1)
    at Object.evaluate (runtime.js:1312:1)
    at Dt.evaluateSyscall (runtime.js:5232:1)
    at Dt.evaluateInner (runtime.js:5188:1)
    at Dt.evaluateOuter (runtime.js:5180:1)
    at Wt.next (runtime.js:6191:1)
    at Wt._execute (runtime.js:6175:1)
    at Wt.execute (runtime.js:6166:1)
    at Yt.sync (runtime.js:6250:1)
    at Er.render (index.js:7576:1)
    at index.js:7896:1
    at It (runtime.js:5074:1)
    at Rr._renderRoots (index.js:7876:1)
    at Rr._renderRootsTransaction (index.js:7928:1)
    at Rr._renderRoot (index.js:7863:1)
    at Rr._appendDefinition (index.js:7770:1)
    at Rr.appendOutletView (index.js:7752:1)
    at invoke (backburner.js:353:1)
    at p.flush (backburner.js:241:1)
    at h.flush (backburner.js:447:1)
    at B._end (backburner.js:999:1)
    at B._boundAutorunEnd (backburner.js:648:1)

Отключение плагина через админку → плагины устраняет ошибку, но теперь заметок нет :frowning:

Возможно, это связано с тем, что я использую discourse-staff-notes, а не discourse-user-notes?

Насколько мне известно, «user notes» — это новое название для «staff notes», это одно и то же. Если вы перейдёте по ссылке https://github.com/discourse/discourse-staff-notes, вас перенаправит на:

Хотя, конечно, не помешает исправить app.yml, если в нём упоминается старый путь.

Кстати, сегодня мы столкнулись с той же ошибкой, что и Тобиас.

Та же ошибка: белый экран на мобильных устройствах, отсутствие верхней навигации на десктопе.
Произошло на главной странице (возможно, и на других, не проверял).

Очень долгая история :sleeping: в двух словах: решающее замечание здесь

Хотя они ссылаются на один и тот же репозиторий, плагин ломается, если он установлен в директорию плагинов, которая называется не discourse-user-notes.

Так что, Тобиас, я готов поспорить, что ты старой закалки и до сих пор назвал его discourse-staff-notes, верно?

Конечно! Я настроил этот сайт в 2015 году, так что я действительно старой школы. Я просто переименовал его и сейчас занимаюсь его восстановлением, так что посмотрим, что получится. Спасибо за подсказку!

Я только что переименовал и пересобрал, включил — и снова всё работает!

Спасибо, @RGJ!

У нас тоже 2015 год!

Думаю, переворот — это как обновление. Просто нужно не забыть это сделать.