首页 > 解决方案 > 如何将 NPM 连接到 Mac 上的天蓝色工件源?

问题描述

我正在尝试从 Mac 连接到我的私人 npm 提要。我从 Connect 生成凭据到 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 文件中?我应该运行其他命令来使用它们吗?

标签: macosnpmazure-artifacts

解决方案


如何将 NPM 连接到 Mac 上的天蓝色工件源?

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

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

在您的开发机器上,对于 Linux 或 Mac 系统,您还有一个位于 $home 中的 .npmrc 文件,对于 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

选中创建持续时间超过 90 天的令牌

如果还是 401 错误,请检查您的PAT 是否已过期并转换为 Base64String没有足够的权限

希望这可以帮助。


推荐阅读