Спасибо, да, это особенность Popper — библиотеки, которую выбор эмодзи использует для позиционирования. Я обновил использование Popper, чтобы устранить эту проблему.
Прежде всего, огромное спасибо @angus
за то, что взялись за этот плагин — он уже давно стал одним из наших любимых.
Я обновился до последней версии, и, похоже, это сломало личные сообщения (PM).
Uncaught TypeError: Cannot read property 'map' of undefined
at _retort-2c5f89abb14744b92588a2ea05689cf5f5fe97d5b9094543abfacf0b1281182f.js:57
at _application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82147
at Array.map (<anonymous>)
at h (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82146)
at i.html (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:78359)
at i.value (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82625)
at i.value (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82345)
at s (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:20534)
at t.exports (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:20521)
at e (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:19890)
_retort-2c5f89abb14744b92588a2ea05689cf5f5fe97d5b9094543abfacf0b1281182f.js:368 Uncaught TypeError: Cannot read property 'toString' of undefined
at t.disabledFor (_retort-2c5f89abb14744b92588a2ea05689cf5f5fe97d5b9094543abfacf0b1281182f.js:368)
at _retort-2c5f89abb14744b92588a2ea05689cf5f5fe97d5b9094543abfacf0b1281182f.js:51
at _application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82147
at Array.map (<anonymous>)
at h (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82146)
at i.html (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:78359)
at i.value (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82625)
at i.value (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82345)
at s (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:20534)
at t.exports (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:20521)
Спасибо, сегодня у нас был PR по удалению lodash, ещё одно устаревание.
Теперь должно быть исправлено:
Пожалуйста, обновите и дайте знать, как у вас получится.
Кажется, теперь всё работает нормально, большое спасибо! ![]()
Мы применили этот CSS, чтобы немного улучшить внешний вид для нас
Desktop
.emoji-picker.has-limited-set img.emoji {
width: 40px !important;
height: 40px !important;
}
.post-retort {
margin: 0px 2px;
}
.emoji-picker.has-limited-set .limited-emoji-set {
flex-wrap: wrap;
}
.emoji-picker {
min-height: 80px;
max-width: 400px;
}
Mobile
.emoji-picker.has-limited-set .limited-emoji-set {
flex-wrap: wrap !important;
}
.emoji-picker {
min-width: 100% !important;
}
Я только что пересобрал Discourse, чтобы обновить плагин. Но теперь иконка плагина отсутствует, как и все мои компоненты темы. Не знаю, связано ли это, но в консоли браузера я вижу это сообщение:
Редактирование: после отключения Retort все компоненты темы вернулись, так что связь действительно, похоже, есть.
Я часто вижу эту ошибку на своем сайте, и через некоторое время весь сайт начинает работать медленно / с задержками для меня.
В безопасном режиме всё в порядке, сайт работает быстро и отзывчиво.
Используется Google Chrome: Версия 85.0.4183.83 (Официальная сборка) (64-разрядная)
Ошибка:
Uncaught TypeError: Cannot read property 'map' of undefined
at retort-11c49191cf3e1f7f570d8808ade67b5d7fcfdfe612b792c49f064baacdebadc7.js:1
at application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1
at Array.map (<anonymous>)
at h (application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1)
at i.html (application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1)
at i.value (application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1)
at i.value (application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1)
at s (vendor-bf8061112a1b547c1b596d16d89c9a42af976a43984f9eacd40a8c690c0f30b2.js:1)
at t.exports (vendor-bf8061112a1b547c1b596d16d89c9a42af976a43984f9eacd40a8c690c0f30b2.js:1)
at e (vendor-bf8061112a1b547c1b596d16d89c9a42af976a43984f9eacd40a8c690c0f30b2.js:1)
if (!v.default.disabledFor(e))
return v.default.storeWidget(r),
o.retorts.map(function(e) { <<<<< ОШИБКА ЗДЕСЬ
var t = e.usernames
, i = e.emoji;
return r.attach("retort-toggle", {
post: o,
usernames: t,
emoji: i
})
Некоторые проблемы с CSS и как я их решил для личного использования
Настольная версия
Первое — не столько проблема, но она может ею стать. У нас редко бывает столько ретортов в одном посте, но имейте в виду: если их будет больше восьми, элементы управления постом сломаются.

А вот здесь их восемь — выглядит отлично.

Использованный CSS для настольной версии
.post-retort {
margin: 0px 2px;
border: 1px solid #333;
border-radius: 5px;
padding: 3px;
background-color: #666;
}
Телефон: iPhone SE первого поколения
Мобильная версия
На данный момент максимальное количество ретортов на мобильном устройстве, при котором элементы управления постом не ломаются (по крайней мере на небольшом экране), — это один.
Если ретортов больше одного, элементы управления постом уходят за пределы экрана.
А вот так это выглядит после наших изменений в CSS.
CSS для мобильной версии
.post-retort {
border: 1px solid #333;
border-radius: 5px;
padding: 3px;
background-color: #666;
margin: 2px 2px;
float: none;
}
С помощью вышеуказанного CSS для мобильной версии можно добиться того же вида на настольной версии — реторты будут размещены над элементами управления постом.

Нам очень нравится этот плагин, и он активно используется на нашем форуме. Спасибо, что взялись за это, @angus ![]()
У меня тоже возникает эта ошибка. Однако компоненты моей темы продолжают работать, но пикер ответов нигде не отображается (так как сломался JS).
Мы обновили Discourse до версии 2.5.1 и впервые установили этот плагин.
Как-то мне удалось решить свою проблему сегодня, пересобрав приложение.
Попробуйте, пожалуйста, сделать то же самое у себя?
У меня тоже стабильная версия (2.5.1).
Да, я сообщил о проблеме в их трекере задач на GitHub, и она была исправлена на следующий день — очень приятно ![]()
Привет, ребята! Нам очень нравится этот плагин, но после последнего обновления в нашем форуме сообщества вместо нейтральных жёлтых эмодзи отображаются эмодзи с белой кожей.
Мы не меняли никаких настроек. Вот наша текущая конфигурация:
Это ожидаемое поведение? Можно ли это изменить?
Спасибо!!
Всем привет,
Я новичок в Discourse. Я установил Discourse, используя исходный код из GitHub, и он уже работает онлайн.
Сегодня я установил Retort и в разделе «Администрирование → Плагины» вижу, что новый плагин Retort установлен и активирован.
Когда я создал новую тему и просмотрел её с другого аккаунта в надежде увидеть кнопку нового плагина Retort, я не нашёл там ожидаемой кнопки…
Я вернулся в панель администратора и подтвердил, что настройки плагина установлены согласно руководству. Пожалуйста, посмотрите изображение ниже.
Поскольку я могу прикрепить только одно изображение, я объединил все три картинки в один файл.
Пожалуйста, помогите мне разобраться, что пошло не так. Любые советы будут очень полезны. Заранее большое спасибо.
Это не ожидаемое поведение. Я займусь этим в выходные.
@kchang, откройте веб-консоль (How can I open the browsers console? – Mailster Knowledge Base) и проверьте, нет ли там ошибок, связанных с этим или другими плагинами/темами, которые у вас установлены (скопируйте и вставьте сюда любые красные строки из консоли; если они длинные, спрячьте их во вкладку «Скрыть детали»).
Привет, @angus,
Большое спасибо за ваш ответ. Я заметил несколько красных строк в консоли; пожалуйста, посмотрите изображение ниже из Opera, которое появляется каждый раз при переходе к посту.
Кажется, что-то не так с “import” в моей установке. Я установил Discourse из исходного кода, а не через Docker, поэтому всегда помещаю новые плагины в discourse/plugins. Именно так я успешно установил два других плагина. Не уверен, правильно ли я установил retort таким же образом.
Кстати, у меня уже был установлен @popperjs/core через npm, но я не знаю, почему возникла эта ошибка…
Спасибо.
Этот импорт был добавлен в ходе рефакторинга emoji-picker, который привел к обновлению этого плагина некоторое время назад (см. выше). Он был добавлен в Discourse примерно месяц назад. Если вы получаете эту ошибку, значит, вы используете более старую версию Discourse. Я предполагаю, что вы работаете с веткой stable.
Этот плагин также поддерживает ветку stable благодаря файлу .discourse_compatibility, но если вы не используете Docker, вам нужно установить плагин с помощью задачи rake plugin:pull_compatible_all, которая загрузит правильную версию плагина для stable.
Если это производственная среда и вы относительно недавно начали работать с Discourse, я настоятельно рекомендую использовать Docker. Он берет на себя управление рядом аспектов окружения Discourse, например, загрузку правильной версии плагина для вашей среды, что может вызвать проблемы у новичков.
Привет, у меня были ограничены эмодзи. При обновлении некоторое время назад мне пришлось разрешить неограниченные эмодзи, чтобы плагин работал.
Спасибо большое, @angus! Вы правы, я сейчас на стабильной ветке Discourse. Я запущу задачу Rake, чтобы получить совместимую версию Retort. Как только я получу доменное имя, перейду на использование Docker-образа — это будет удобнее. ![]()
Обновление:
Я выполнил команду rake plugin:pull_compatible_all, но, похоже, моя стабильная версия Discourse слишком старая. Поэтому я загрузил последнюю версию Discourse. Теперь всё работает без сбоев ![]()
Ещё раз спасибо за вашу добрую помощь ![]()
В теме по умолчанию Discourse в мобильном режиме кнопка «Ответить» отделена от остальных иконок нижней панели инструментов (лайк, поделиться и т. д.), из-за чего иконка «Цитировать» опускается вниз, и это выглядит очень некрасиво.
Я добавил этот CSS в тему, чтобы исправить дизайн. Возможно, он окажется полезным и для вас.
.mobile-view {
.topic-post nav.post-controls .actions button.reply {
margin: inherit;
margin-left: 10px;
}
nav.post-controls .actions {
text-align: right;
float: right;
display: inline-block;
}
.topic-post nav.post-controls .actions .double-button {
display: inline-flex;
}
.post-menu-area {
margin: 0;
padding-top: 15px;
}
}
Отлично, спасибо ![]()
Если тебе нужна помощь с отладкой или у тебя есть какие-то идеи насчёт возможной причины проблемы, дай знать.











