2017-02-23 94 views
0

我们在虚拟存储库内有2个远程NPM注册表。其中一个是NPM Registry,另一个来自软件提供商。当我将第二个存储库添加到虚拟存储库时,我随机获取HTTP 400消息。HTTP 400 - 无法解析远程存储库npm元数据

例如:如果我想从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.bi[email protected]7360bc6c; line: 1, column: 2] 

正如你所看到的,Artifactory的是试图从另一个仓库包。我们artifactory的的JSON响应,当我试图让包手动是:

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

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

供参考:我们正在使用Artifactory的临4.5.1

回答

2

有两件事情你应该做的,以避免此行为

  1. 配置virtual repository分辨率顺序,使故宫注册表的软件供应商接洽之前注册表中。分辨率顺序由它们在“选定存储库”列表中显示的顺序控制。
  2. 使用include/exclude patterns来控制从软件提供程序注册表中解析哪些软件包。假设有一种方法可以识别应该从软件提供商处解决的软件包,您可以定义一些模式,这些模式将仅限于某些软件包解析的注册表。

另一件要检查的是软件提供程序远程存储库是否配置正确。通常,它不应该为API调用返回HTML响应。

+0

感谢您的提示。第二个选项解决了问题。 – merlino