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

Javascript NPM注册表安装在非注册表依赖项上失败,javascript,angular,ionic-framework,npm,nexus,Javascript,Angular,Ionic Framework,Npm,Nexus,我正试图通过注册表安装我的Ionic应用程序,并附带它的依赖项。 我试图通过npm I--loglevelverbose实现这一点,而我的~/.npmrc如下所示: //nexus.OMMITED.com/repository/:_auth=OMMITED registry=http://nexus.OMMITED.com/repository/npm-all always-auth=true //nexus.OMITTED.com/repository/:_authToken=OMITTED

我正试图通过注册表安装我的Ionic应用程序,并附带它的依赖项。 我试图通过
npm I--loglevelverbose
实现这一点,而我的
~/.npmrc
如下所示:

//nexus.OMMITED.com/repository/:_auth=OMMITED
registry=http://nexus.OMMITED.com/repository/npm-all
always-auth=true
//nexus.OMITTED.com/repository/:_authToken=OMITTED
registry=http://nexus.OMITTED.com/repository/npm-all/
_auth=OMITTED
email=bob@OMITTED.nl
当看到命令运行时,它似乎运行得很好,直到我们遇到其他非注册表依赖项时,我突然遇到一个授权错误

下面是命令的粘贴:

如您所见,它在
@angular上失败/http@6.1.2
在本例中,但此变量介于随机
@angular
依赖项或
@ionic native

到目前为止我所尝试的…

  • 始终验证
    更改为
  • 作为超级用户运行
  • 尝试不同的代币
  • 使用
    \u authToken
    而不是
    \u auth
  • 谷歌,很多,但事实证明我的问题非常独特
  • npm登录--注册表=http://nexus.OMMITED.com/repository/npm-all
    同时使用
    --auth=TOKEN\u省略
    --authToken=TOKEN\u省略
    ,其中npm告诉我
    npm警告无效配置auth type=“TOKEN\u省略”
    ,并提示输入用户名,但是,我的用户名是一个引发此错误的电子邮件地址:
    npm WARN Name可能不包含非url安全字符
    ,只会无限期地提示输入另一个用户名

  • 您希望在Nexus Repo 3中使用npm登录:

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


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

    我不知道如何或为什么,但如果我在命令中指定完整注册表,则不知何故,它现在可以工作了,例如:

    npm——注册表=http://nexus.OMITTED.com/repository/npm-all/ 安装

    而我的
    ~/.npmrc
    如下所示:

    //nexus.OMMITED.com/repository/:_auth=OMMITED
    registry=http://nexus.OMMITED.com/repository/npm-all
    always-auth=true
    
    //nexus.OMITTED.com/repository/:_authToken=OMITTED
    registry=http://nexus.OMITTED.com/repository/npm-all/
    _auth=OMITTED
    email=bob@OMITTED.nl
    
    所有这些对我来说都毫无意义,但我很高兴它起到了改变的作用


    如果有人最终写了一个正确的答案来回答这个问题,比如这个为什么有效,这个如何有效,以及为什么正常的方式不起作用,那么我会欣然接受这个答案并奖励赏金。

    使用
    npm login
    需要我输入用户名,我的用户名是一个电子邮件地址,似乎有url不安全的字符,正因为如此,它不允许我再继续下去了。我还尝试将我的令牌添加为一个参数,方法是在我的令牌后面附加一个
    --auth
    --authToken
    参数,但这被证明是没有问题的。使用
    --auth
    命令时出现的错误是:
    npm WARN invalid config auth type=“my_Token”,
    `Token由于明显的原因被忽略。当我使用
    --authToken
    时,它只会再次提示我输入用户名。请注意
    403
    错误代码似乎也是“随机”的,有时是
    403
    ,有时是
    401
    。我注意到npmrc文件的第一行似乎是使用
    /
    的注释。根据注释,不要使用
    /
    作为注释,而是使用
    #
    。不确定这将如何影响它,但需要尝试更改一些内容。此外,第一行是否正在尝试为url的范围设置
    \u auth
    ?您应该尝试将just
    \u auth
    设置为您的令牌,以查看其是否有效。如果您需要确定范围,那么我在前面的评论中链接的文档似乎表明,要确定您所做的事情的范围,
    @scope:\u auth=…
    ,因此这是值得尝试的。(如果你好奇,这里有一些文档要结帐)