Хм, интересно, давайте посмотрим:
`yarn why`
❯ yarn why markdown-it
yarn why v1.22.10
[1/4] 🤔 Почему у нас есть модуль "markdown-it"...?
[2/4] 🚚 Инициализация графа зависимостей...
[3/4] 🔍 Поиск зависимости...
[4/4] 🚡 Вычисление размеров файлов...
=> Найден "markdown-it@13.0.1"
info Причины существования этого модуля
- "_project_#discourse" зависит от него
- Поднят из "_project_#discourse#markdown-it"
info Размер на диске без зависимостей: "732KB"
info Размер на диске с уникальными зависимостями: "1.31MB"
info Размер на диске с транзитивными зависимостями: "1.31MB"
info Количество общих зависимостей: 5
=> Найден "ember-cli#markdown-it@12.0.4"
info Этот модуль существует, потому что "_project_#discourse#ember-cli" зависит от него.
info Размер на диске без зависимостей: "724KB"
info Размер на диске с уникальными зависимостями: "1.3MB"
info Размер на диске с транзитивными зависимостями: "1.3MB"
info Количество общих зависимостей: 5
=> Найден "markdown-it-terminal#markdown-it@8.4.2"
info Этот модуль существует, потому что "_project_#discourse#ember-cli#markdown-it-terminal" зависит от него.
info Размер на диске без зависимостей: "708KB"
info Размер на диске с уникальными зависимостями: "1.29MB"
info Размер на диске с транзитивными зависимостями: "1.29MB"
info Количество общих зависимостей: 5
✨ Готово за 0.39с.
Итак, package.json проекта Discourse запрашивает версию 13.0.1, собственный package.json ember-cli запрашивает 12.0.4, а markdown-it-terminal требует 8.4.2.
В любом случае, в теории всё это должно быть невидимым. Сам Discourse запрашивает версию 13.0.1, поэтому версия в app/assets/javascripts/node_modules/markdown-it должна быть 13.0.1. Другие более старые версии будут доступны для их соответствующих родителей.
Учитывая, что мы не наблюдаем этого во внутренней среде, и это происходит только у людей с нестандартной установкой, я подозреваю, что где-то в шаблонах двухконтейнерной настройки отсутствует команда yarn install, из-за чего контейнер базы данных запускается с кэшированной версией markdown-it из базового образа ![]()