2017-02-23 117 views
0

У нас есть 2 удаленных регистратора NPM внутри виртуального репозитория. Один из них - это реестр NPM, другой - поставщик программного обеспечения. Когда я добавляю второй репозиторий в виртуальный репозиторий, я получаю сообщения HTTP 400 наугад.HTTP 400 - Невозможно проанализировать удаленные репозитории npm метаданные

Например: если я хочу установить пакет из реестра npm, я вижу через журналы, что Artifactory пытается получить пакет из другого репозитория (который не имеет пакета) и пытается проанализировать ответ как json. Ответ от другого хранилища возвращает в HTML-файл, хотя, который приводит следующее сообщение об ошибке:

2017-02-23 09:39:05,424 [http-nio-8080-exec-7112] [ERROR] 
(o.a.a.n.r.NpmRemoteRepoHandler:362) - Error while parsing the response of a remote npm 
JSON query on 'https://repository.domain.com/api/npm/public/file-loader': 
Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 
'true', 'false' or 'null') 
at [Source:org.artifactory.storage.db.bi[email protected]7360bc6c; line: 1, column: 2] 

Как вы можете видеть, Artifactory пытается получить пакет из другого хранилища. Ответ в формате JSON нашего Artifactory, когда я пытаюсь получить пакет вручную является:

{ 
"errors" : [ { 
"status" : 400, 
"message" : "Unable to parse remote repository npm metadata." 
    } ] 
} 

Любая помощь будет высоко ценится, так как это делает НПМ Registry совершенно бесполезным, так как некоторые запросы возвращают этот HTTP 400 ошибка.

FYI: Мы используем Artifactory Pro 4.5.1

ответ

2

Есть 2 вещи, которые вы должны сделать, чтобы избежать этого

  1. Настройка порядка разрешающую virtual repository поэтому реестр НПМ подошел перед поставщиком программного обеспечения реестр. Порядок разрешения контролируется порядком их представления в списке «Избранные репозитории».
  2. Используйте include/exclude patterns для управления пакетами, которые разрешены из реестра поставщика программного обеспечения. Предполагая, что существует способ идентифицировать пакеты, которые должны быть разрешены поставщиком программного обеспечения, вы можете определить шаблоны, которые ограничивают этот реестр только для разрешения определенных пакетов.

Еще одна вещь, которую нужно проверить - правильно ли настроен удаленный репозиторий поставщика программного обеспечения. Обычно он не должен возвращать ответ HTML для вызова API.

+0

Спасибо за подсказку. Вторая проблема устранила проблему. – merlino