#Симптомы и условия возникновения
После смены npm registry установка по-прежнему обращается к прежнему адресу, потому что в lock-файле уже сохранены resolved URL архивов, настройки областей пакетов или прокси. Нужно определить, какой уровень конфигурации задаёт адрес. Для начала проверьте используемую версию среды и точный текст ошибки на копии проекта, не меняя рабочий сервер.
#Причины и как их отличить
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| В lock-файле прописан resolvedВ этой ситуации наблюдается конкретный диагностический признак. Сопоставьте его с журналом ошибки и результатом соответствующей проверки, прежде чем выбирать исправление. | npm ci скачивает по старому URL | Сверить ссылку и воспроизводимо обновить lock на копии. |
| Отдельный registry для scopeВ этой ситуации наблюдается конкретный диагностический признак. Сопоставьте его с журналом ошибки и результатом соответствующей проверки, прежде чем выбирать исправление. | @company:registry указывает на старый хост | Обновить область по правилам организации. |
| Конфигурация перекрывается окружениемВ этой ситуации наблюдается конкретный диагностический признак. Сопоставьте его с журналом ошибки и результатом соответствующей проверки, прежде чем выбирать исправление. | Вывод npm config get registry не совпадает с ожидаемой командой в CI | Проверить env и проектный .npmrc. |
#Пошаговая диагностика и решение
- 1. Сохраните копии конфигурации и lockСделайте копию
package.json,package-lock.jsonи проектного .npmrc без секретных ключей. Не удаляйте lock-файл: это может обновить все зависимости и нарушить воспроизводимость сборки.
- 2. Установите адрес, который считает текущим npmВ корне проекта выполните
npm config get registry, затем изучите.npmrcв проекте и параметры запускного окружения. У областей@scopeмогут быть свои адреса. - Читает адрес, но не раскрывает токен; если адрес неверен, проверьте уровень настройкиLinux · Терминал (Bash)КомандаЧитает адрес, но не раскрывает токен; если адрес неверен, проверьте уровень настройки.
npm config get registry
- 3. Проверьте lock-файл без публикации секретовВ редакторе выполните поиск по старому домену в
package-lock.json; обратите внимание на поляresolvedдля пакетов. Не редактируйте такие адреса массовой заменой без понимания структуры.
- 4. Проверьте область пакетаЕсли зависимость начинается с
@scope/, проверьте параметр@scope:registryна нужном уровне .npmrc. Частные пакеты нельзя автоматически отправлять на публичный реестр.
- 5. Проверьте URL безопасным чтениемВ тестовой копии выполните
npm view имя-пакета dist.tarball --registry=https://registry.npmjs.org/для публичного пакета. Для частного используйте разрешённый registry и учётную запись с доступом.
- 6. Обновите lock в отдельной веткеНа копии проекта выполните штатный
npm install --package-lock-onlyпри согласованной конфигурации реестра. Затем проверьте diff lock-файла и убедитесь, что не произошло нежелательной смены версий; npm может сохранять существующие URL.
- 7. Убедитесь в источнике скачиванияВ изолированной копии проверьте verbose-журнал npm ci и фактические домены запросов. Если npm продолжает обращаться к старому хосту, изучите
resolved, параметры конкретного registry/прокси или пересоздайте lock контролируемым способом после согласования.
#Как проверить результат и что делать, если не помогло
Установка использует утверждённый реестр, версии зависимостей не сменились неожиданно, лог не содержит обращений к запрещённому прежнему адресу.
Если неисправность повторилась, выпишите первый код ошибки и действие, на котором она возвращается. Сравните версию Node.js/npm, рабочий каталог, настройки процесса и журнал тестового запуска. Откатите только внесённые изменения из предварительно сохранённой копии, затем разберите причину на отдельной среде.