2017-02-23 92 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