【问题标题】:How to connect NPM to azure artifacts feed on Mac?如何将 NPM 连接到 Mac 上的 Azure 工件源?
【发布时间】:2019-11-16 21:00:39
【问题描述】:

我正在尝试从 Mac 连接到我的私人 npm 提要。我从 Connect to feed 菜单生成了凭据,它们看起来像这样:

; begin auth token
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:username=ANYTHING-BUT-EMPTY
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:_password=BASE64-ENCODED-PAT-GOES-HERE
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/:username=ANYTHING-BUT-EMPTY
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/:_password=BASE64-ENCODED-PAT-GOES-HERE
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token

我将它放在我项目的 .npmrc 文件中,但它不起作用。当我尝试执行 npm install 时,我收到此错误:

code E401
npm ERR! Unable to authenticate, need: Bearer authorization_uri=https://login.windows.net/...,
Basic realm="https://pkgsprodsu3weu.app.pkgs.visualstudio.com/", TFS-Federated

我还将这些凭据放在 $HOME 目录中,但也没有解决问题。我究竟做错了什么?它们应该在哪个 .npmrc 文件中?我应该运行其他命令来使用它们吗?

【问题讨论】:

    标签: macos npm azure-artifacts


    【解决方案1】:

    如何将 NPM 连接到 Mac 上的 azure artifacts 馈送?

    包含凭据的.npmrc 文件应设置在$home 目录中。

    查看文档Use npm to store JavaScript packages in Azure DevOps Services or TFS

    在您的开发机器上,您的 $home 中还有一个 .npmrc 文件,用于 Linux 或 Mac 系统,或用于 Windows 系统的 $env.HOME。这个 .npmrc 文件应包含您注册的所有注册表的凭据 需要连接到。 npm 客户端将查看您项目的 .npmrc 文件,发现注册表,并从中获取匹配的凭据 $home/.npmrc 或 $env.HOME/.npmrc。下一节将讨论 凭证获取。

    由于它仍然不适合您,您可以检查您的 npmrc 令牌是否已过期。在您的 .npmrc 中,我发现您使用的是 BASE64-ENCODED-PAT-GOES-HERE,您似乎使用的是 PAT,但使用的是 90 天令牌类型.npmrc 文件应该是这样的:

    //pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:username=ANYTHING-BUT-EMPTY
    //pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:_password=BASE64-ENCODED-PAT-GOES-HERE
    //pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:email=YOUREMAIL@EXAMPLE.COM
    //pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:always-auth=true
    

    检查Create a token that lasts longer than 90 days

    如果还是 401 错误,请检查您的PAT是否已过期并转换为Base64Stringdo not have enough permission

    希望这会有所帮助。

    【讨论】:

    • 问题出在项目文件夹内 npmrc 中的注册表地址中。不知何故,在工作中运行良好的地址在家里却不起作用,当我在门户网站上查看时,发现有点不同。
    • 我解决了。您的回答对我没有帮助,因为问题在于微软在“连接到提要”页面上更改了注册表字符串,而且我不是很专心,所以我没有注意到它有所不同。更新注册表地址后,一切都开始正常工作,所以看起来问题出在那个地方。从“....visualstudio....”到“pkgs.dev.azure.com......”。
    • @AlexandrAccord,很高兴知道您已经解决了您的问题,您介意分享您的解决方案作为答案,以便帮助遇到同样问题的其他社区成员吗?谢谢。
    【解决方案2】:

    在我的例子中,出于某种原因,我需要用双引号和方括号将 base 64 编码的标记括起来以使其工作。

    //pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:_password="[BASE64-ENCODED-PAT-GOES-HERE]"
    

    注意:“[ 和末尾的 ]”。

    添加之后,一切正常。

    我正在运行 MacOS Big Sur 11.6

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 2021-01-14
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 2022-01-02
      相关资源
      最近更新 更多