Pull to refresh

Comments 4

Я примерно то же самое сказал, когда увидел в отладчике, как два consume-модуля vue зовут друг друга по кругу, только другими словами 🙂

Разве во всех доках по MF не делают акцень на singleton shared зависимости? Просто как вы оказались в этой ситуации вообще?

Хороший вопрос, пришлось даже перечитать код шеринга внимательнее, чем во время самого инцидента:))

Да, в доках этот акцент есть, и singleton у нас в итоге стоит, правда появился он уже после разбора. Сама же ситуация сложилась буднично — shared‑конфиг писался, когда локатор vue в lockfile был один. Второй появился позже вместе со свежим диапазоном в одном из workspace‑пакетов, а вложенными копии легли потому, что хойстингу в корень мешает пин Vue 2 у легаси‑хоста. Подсветить дубль при этом некому, установка и сборка на него не жалуются, вот он и дожил тихо до первого инцидента.

Singleton же и в теории не про эту засаду, потому что весь его вклад ограничен выбором версии, которую share scope отдаст потребителю. По‑настоящему singleton влияет лишь на случай, когда в scope к моменту резолва уже лежит загруженная версия — тогда он возьмёт её даже при несовпадении диапазона и ограничится предупреждением в консоли, поэтому страница не повиснет, зато приложение получит чужую мажорную версию и вероятно, тихо сломается позже.

От самой засады лечит только отсутствие второй копии, а singleton у нас стоит скорее как страховка, а не как решение.

Sign up to leave a comment.

Articles