【问题标题】:Azure DevOps self hosted agent reports wrong version for NPMAzure DevOps 自托管代理报告 NPM 版本错误
【发布时间】:2022-02-11 11:07:07
【问题描述】:

我们已在基于 Windows 的自托管代理上将 Node 更新到版本 10.16.3,并将 NPM 更新到版本 6.11.3(目前都是最新版本)。

但是,在作业运行日志中,我们看到代理报告 NPM 版本为 6.9.0,这是 Node 10.16.3 安装的默认版本。

在托管代理所在的 VM 中,如果我在 CMD 中运行“npm”,我将获得 NPM 的最新版本。此外,如果我运行代理正在运行的相同命令来获取版本,我仍然会得到 NPM 的正确版本:

这里有什么问题? 我们想要最新版本的 NPM 的原因是因为我们的构建使用它运行得更快。

谢谢!

【问题讨论】:

  • 在我这边,托管代理的node.js版本(VS2017,VS2019)都是6.9.0。 imgur.com/a/FeSHE5l 与 npm 任务结果相同。不确定您的托管代理怎么样?
  • 6.9.0 是 NPM 版本,不是 Node。我希望它是 6.11.3。
  • 节点版本 6.11.3?对于代理,节点版本可以是您在第一句话中提到的 10.16.3。
  • 梅林,请仔细阅读问题。我说我使用的是 Node 10.16.3 我希望 NPM 版本是 6.11.3
  • 是的,这是我首先得到的,在我的第一条评论中,我分享了一个截图,想表达一下托管代理,最新版本是6.9.0,不知道你怎么样从托管代理获取 6.11.3。另外,为我的表达不正确表示歉意。我在第一条评论中将 npm 版本写为 node.js 版本。

标签: node.js windows npm azure-devops


【解决方案1】:

我们对这个问题采取了一种非常业余的方法。当我们通过 RDP 登录时,我们使用的是用户“代理”并且所有安装都针对该用户。但是,代理使用的是 NetworkService 用户,该用户具有自己的 NPM 和 Node 范围。

修复基本上是在我们的构建管道中添加步骤以检查 NPM 的最新版本并在未安装的情况下安装它。

【讨论】:

    【解决方案2】:

    是的,我也被这个抓住了。因为它在 NetworkService 帐户下运行,它无法读取全局文件夹,所以它有自己的小副本/缓存在

    C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\npm
    

    我最简单的恢复和运行方法是使用以下命令手动升级该位置的 npm:

    npm install --prefix C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\npm  npm
    

    【讨论】:

      猜你喜欢
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 2021-03-23
      • 2021-11-14
      • 1970-01-01
      相关资源
      最近更新 更多