为什么npm说的是404,而curl可以是200

为什么npm说的是404,而curl可以是200,npm,artifactory,Npm,Artifactory,我添加了一个类似myscope:registry的注册表=https://myprivatedomain.com/artifactory/api/npm/npm-myregistry-release/到我的.npmrc文件 当我安装@myscope/mypackagenpm时,它说找不到404。当我对调试日志进行cat时,它会出现错误7httpfetchget404https://myprivatedomain.com/artifactory/api/npm/npm-myregistry-rel

我添加了一个类似
myscope:registry的注册表=https://myprivatedomain.com/artifactory/api/npm/npm-myregistry-release/
到我的
.npmrc
文件

当我安装@myscope/mypackage
npm时,它说找不到404。当我对调试日志进行cat时,它会出现错误
7httpfetchget404https://myprivatedomain.com/artifactory/api/npm/npm-myregistry-release/@myscope%2FmyPackage1463ms
这很奇怪,因为如果我这样做
curlhttps://myprivateregistry.com/@myscope%2fmypackage
我看到一个响应。知道我可能配置错了什么吗

在curl上使用
-i
可以提供您所期望的所有适当的内容,例如200:

HTTP/1.1 200 OK
Date: Fri, 20 Jul 2018 19:03:17 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
Server: Artifactory/5.10.3
X-Artifactory-Id: 3cfb3447e11ab4943a37f53d7a5dcd357274261d
X-Artifactory-Node-Id: art2
ETag: c3636860e64da7eda14f65ff25c1e8ad11266adc
我做了
npm搜索@myscope
,什么也没找到。然后我将
.npmrc
更新为
注册表=https://myprivatedomain.com/artifactory/api/npm/npm-myregistry-release/
并运行了搜索。我看见包裹上来了。尽管现在搜索还在工作,但当我去安装时它仍然显示404

我让我的同事使用相同的npm配置,这对他很有效。我关闭了我的终端并重新启动(以防我使用npm登录设置了一些不好的东西,作为一种理智检查),但仍然存在问题。如果我退出npm并尝试安装,我会得到401。然后我再次登录了
npm
,回到了
E404

我还进入了我的
.gitconfig
,并注释掉了
,而不是像这样:

#[url "https://"]
#       insteadOf = git://
老实说,我不知道为什么会出现这种情况,但似乎值得一试,仅就这一点发表评论。

从中,正确的URL应该是:

npm config set registry http://<ARTIFACTORY_SERVER_DOMAIN>:8081/artifactory/api/npm/npm-repo/
npm配置集注册表http://:8081/artifactory/api/npm/npm repo/
在您的情况下:
myprivateregistry.com/api/npm/npm repo
:与您的同事(没有问题)核实他/她的
.npmrc
参考资料

从OP来看,注册表端的工件有缺陷。

一种解释是,这对另一位同事没有影响,因为这位同事在他/她的本地npm缓存中有它。

似乎注册表端存在一些配置问题。将此作为占位符写入。希望让注册表所有者写下他们做了什么来纠正这个问题。非常奇怪,因为它没有影响到所有人

您使用的是某种代理订单vpn吗?您使用的是与curl中相同的npm登录用户吗?听起来像是许可证thing@KeKsBoTer我和一个没有问题的同事在同一个网络上。@danf我也在考虑npm登录的问题。我觉得我已经登录了多个位置。如果我使用的是curl,这难道不意味着我是匿名的,所以任何登录都可以工作吗?我使用的是短域作为一个例子,因为真正的域是一个私人URL,我可能会在发布时遇到麻烦,即使它只能在我们的网络上访问:)我将在上面使它更现实。但是同样,使用
.npmrc
意味着我不需要做
npm配置集
@DaveStein
npm配置
set配置
.npmrc
。我有点困惑。然而,我让我的同事复制粘贴了我的npmrc,无论哪种方式对他都有效。@DaveStein,因此我怀疑存在身份验证问题,这意味着在您的案例中凭据设置不正确。或者您在Artifactory端的用户无权访问该npm repo。那么您认为是否存在npm bug?它说的是404,而实际上它是一个许可的东西?我的意思是,就像上面说的,如果我注销,我会得到一个401,这确实是我所期望的。我已经编辑了我的答案,并给出了可能的解释。