我正在使用Artifactory Pro 4.12.1。我创建了一个名为npmjs-local
的本地npm存储库,一个名为npmjs-remote
的远程npm存储库,以及一个名为npmjs
的虚拟npm存储库,聚合了前两个存储库。
然后我配置npm使用Artifactory作为注册表,使用:
$ npm config set registry http://artifactory.example.org/artifactory/api/npm/npmjs
当我尝试使用npm search foo
搜索包时,出现以下错误:
npm WARN Building the local index for the first time, please be patient
npm ERR! registry error parsing json
npm ERR! Darwin 15.6.0
npm ERR! argv "/usr/local/Cellar/node/7.2.0/bin/node" "/usr/local/bin/npm" "search" "foo"
npm ERR! node v7.2.0
npm ERR! npm v3.10.9
npm ERR! Unexpected token C in JSON at position 0
npm ERR! Cannot find the npm repository index at 'npmjs'
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR! <https://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
npm ERR! /Users/dserodio/npm-debug.log
我使用--loglevel verbose
运行相同的搜索,我看到“无效的JSON”来自http://artifactory.example.org/artifactory/api/npm/npmjs/-/all:
Cannot find the npm repository index at 'npmjs'
编辑:这种情况通过Nginx代理发生,直接发生在Artifactory上。这是完整的HTTP响应:
$ curl -v http://artifactory.example.org:8081/artifactory/api/npm/npmjs/-/all
* Trying 10.1.2.3...
* Connected to artifactory.example.org (10.1.2.3) port 8081 (#0)
> GET /artifactory/api/npm/npmjs/-/all HTTP/1.1
> Host: artifactory.example.org:8081
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Server: Artifactory/4.12.1
< X-Artifactory-Id: b0f4dd7e3f5106cd:-3efe7253:158c0a36030:-7ffd
< Content-Type: application/json
< Transfer-Encoding: chunked
< Date: Tue, 06 Dec 2016 16:35:01 GMT
<
* Connection #0 to host artifactory.example.org left intact
Cannot find the npm repository index at 'npmjs'
可能导致此错误的原因是什么?
答案 0 :(得分:2)
如果从未生成虚拟存储库的NPM索引,则会发生这种情况。
解决问题的最佳方法是重新索引存储库,这可以使用REST API完成:
curl -uadmin:password -XPOST http://artifactory.example.org:8081/artifactory/api/npm/npmjs/reindex
REST调用将触发异步索引过程,可以使用Artifactory日志文件进行监视。您应该看到以下消息:
2016-12-07 13:11:02,455 [http-nio-8081-exec-5] [INFO ] (o.a.a.n.r.NpmRequestHelper:124) - Recalculating index for npm repository npmjs scheduled to run
2016-12-07 13:12:02,527 [art-exec-102209] [INFO ] (o.a.a.n.NpmServiceImpl:237) - Npm metadata recalculation has been started for repository 'npmjs'
2016-12-07 13:13:31,071 [art-exec-102209] [INFO ] (o.a.a.n.NpmServiceImpl:263) - Finished npm metadata recalculation for repo 'npmjs' in 1.48 minutes