#Симптомы и условия возникновения
При npm publish могут появляться ошибки E401, E403 и сообщения о недостаточном доступе. В новых настройках публикации обычно используются доверенная публикация (OIDC), действующая учётная запись и/или второй фактор; проверка зависит от политики пакета. Для начала проверьте используемую версию среды и точный текст ошибки на копии проекта, не меняя рабочий сервер.
#Причины и как их отличить
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Не выполнена правильная авторизацияВ этой ситуации наблюдается конкретный диагностический признак. Сопоставьте его с журналом ошибки и результатом соответствующей проверки, прежде чем выбирать исправление. | npm whoami не показывает ожидаемого пользователя | Войти официальным способом и сверить реестр. |
| Нет прав на имя/область пакетаВ этой ситуации наблюдается конкретный диагностический признак. Сопоставьте его с журналом ошибки и результатом соответствующей проверки, прежде чем выбирать исправление. | Ошибка E403 для чужой области или существующего имени | Проверить владение, приглашение и scope. |
| Требуется дополнительная проверкаВ этой ситуации наблюдается конкретный диагностический признак. Сопоставьте его с журналом ошибки и результатом соответствующей проверки, прежде чем выбирать исправление. | Реестр требует двухфакторную проверку или trusted publishing | Настроить поддерживаемый способ публикации. |
#Пошаговая диагностика и решение
- 1. Сохраните полный код ошибки без токеновВыполните публикацию только из копии пакета либо на тестовом пакете, запишите E401/E403 и имя реестра. Никогда не публикуйте содержимое .npmrc или токены доступа.
- 2. Проверьте целевой реестрЗапустите
npm config get registry; убедитесь, что публикуете в нужный общедоступный или корпоративный реестр. Для пакетов с областью@team/может применяться отдельный registry.
- 3. Проверьте пользователяВыполните
npm whoami --registry=https://registry.npmjs.org/только для публичного npm; для корпоративного реестра подставьте свой адрес. Если команда выдаёт ошибку, выполнитеnpm loginсогласно инструкции реестра.
- 4. Проверьте доступ к имени и публикацию версийОткройте страницу пакета и права команды в соответствующем реестре. Имя уже занятого чужого пакета нельзя «перехватить», а одинаковая версия не публикуется повторно; изменение доступа — задача владельца.
- 5. Проверьте настройки MFA или доверенной публикацииВ веб-интерфейсе реестра посмотрите требования пакета: двухфакторная проверка, ограниченные токены или trusted publishing с OIDC. Выберите официально поддерживаемую схему; не отключайте двухфакторную защиту ради публикации.
- 6. Проверьте состав до публикацииВ каталоге пакета выполните
npm pack --dry-run: посмотрите список файлов и убедитесь, что туда не попали .env, ключи и личные данные. При необходимости исправьте files/.npmignore в тестовой ветке. - Локальная безопасная проверка содержимого публикации; не отправляет пакет в реестрLinux · Терминал (Bash)КомандаЛокальная безопасная проверка содержимого публикации; не отправляет пакет в реестр.
npm pack --dry-run
- 7. Повторите публикацию по разрешённой процедуреДля собственного пакета с нужными правами и выбранной версией выполняйте
npm publishчерез одобренный способ. Убедитесь в появлении версии в реестре; если E403 сохранилась, обратитесь к владельцу организации со сведениями о правах.
#Как проверить результат и что делать, если не помогло
Реестр подтверждает публикацию нужной версии от разрешённого владельца, состав пакета соответствует npm pack --dry-run и не содержит секретов.
Если неисправность повторилась, выпишите первый код ошибки и действие, на котором она возвращается. Сравните версию Node.js/npm, рабочий каталог, настройки процесса и журнал тестового запуска. Откатите только внесённые изменения из предварительно сохранённой копии, затем разберите причину на отдельной среде.