HTTP 400 - 无法解析远程存储库npm元数据

时间:2017-02-23 08:51:21

标签: artifactory

我们在虚拟存储库中有2个远程NPM注册表。其中一个是NPM Registry,另一个来自软件提供商。当我将第二个存储库添加到虚拟存储库时,我随机收到HTTP 400消息。

例如:如果我想从npm-registry安装一个包,我会看到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.binstore.service.UsageTrackingBinaryProvider$ReaderTrackingStream@7360bc6c; line: 1, column: 2]

如您所见,Artifactory正试图从其他存储库获取包。当我尝试手动获取包时,我们的神器的JSON响应是:

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

任何帮助将不胜感激,因为这使得NPM注册表完全无用,因为一些请求返回此HTTP 400错误。

fyi:我们正在使用Artifactory Pro 4.5.1

1 个答案:

答案 0 :(得分:2)

你应该做两件事来避免这种行为

  1. 配置virtual repository解析顺序,以便在软件提供程序注册表之前联系NPM注册表。解决方案顺序由它们在“选定的存储库”列表中显示的顺序控制。
  2. 使用include/exclude patterns控制从软件提供商注册表中解析的软件包。假设有一种方法可以识别应该从软件提供程序解析的软件包,那么您可以定义模式,这些模式将限制此注册表仅用于解析某些软件包。
  3. 要检查的另一件事是软件提供程序远程存储库是否配置正确。通常它不应该为API调用返回HTML响应。