NPM注册表安装在非注册表依赖项上失败

时间:2018-08-09 15:17:52

标签: javascript angular ionic-framework npm nexus

我正在尝试通过注册表及其相关性来安装Ionic App。 我尝试通过npm i --loglevel verbose实现这一目标,而我的~/.npmrc看起来像这样:

//nexus.OMMITED.com/repository/:_auth=OMMITED
registry=http://nexus.OMMITED.com/repository/npm-all
always-auth=true

观看命令运行时,似乎运行得很好,直到遇到其他非注册依赖项,突然我遇到了授权错误。

以下是命令的粘贴内容:https://hasteb.in/hejigopo.sql

在这种情况下,如您所见,它在@angular/http@6.1.2上失败,但是此变量在随机@angular依赖项或@ionic-native之间变化

到目前为止我已经尝试过...

  1. always-auth更改为truefalse
  2. 以超级用户身份运行
  3. 尝试不同的令牌
  4. 使用_authToken代替_auth
  5. 很多,但是事实证明我的问题很独特。
  6. npm login --registry=http://nexus.OMMITED.com/repository/npm-all同时包含--auth=TOKEN_OMITTED--authToken=TOKEN_OMITTED,其中npm告诉我npm WARN invalid config auth-type="TOKEN_OMITTED"并提示输入用户名,但是我的用户名是一个电子邮件地址,它引发以下错误:{{ 1}}只是无限地提示您输入另一个用户名。

2 个答案:

答案 0 :(得分:6)

我不知道如何或为什么,但是某种程度上现在可以工作,如果我在命令中指定完整注册表,就像这样:

npm --registry=http://nexus.OMITTED.com/repository/npm-all/ install

我的~/.npmrc看起来像这样:

//nexus.OMITTED.com/repository/:_authToken=OMITTED
registry=http://nexus.OMITTED.com/repository/npm-all/
_auth=OMITTED
email=bob@OMITTED.nl

这一切对我来说都没有道理,但我很高兴它能为改变做准备。

如果最终有人对此写出正确的答案,说明它为什么起作用,它如何起作用以及为什么正常方式不起作用,那么我将很乐意接受它作为答案并奖励赏金。

em>

答案 1 :(得分:0)

您想在Nexus Repo 3中使用npm登录:

https://help.sonatype.com/display/NXRM3/Node+Packaged+Modules+and+npm+Registries#NodePackagedModulesandnpmRegistries-AuthenticationUsingRealmandLogin

并确保在Nexus UI的“安全性/领域”下启用了npm承载令牌领域。

也就是说,错误是403,而不是401。这意味着您由于权限而被拒绝。我建议检查联系request.log并确保403来自Nexus。它们可能来自您的http代理服务器。如果它们来自Nexus,则意味着用户已通过身份验证,但在nexus中没有从该存储库下载的权限。