You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自托管Azure DevOps Agent以NetworkService运行时npm install报错如何解决

问题根因

你遇到的npm ERR! Cannot read property 'startsWith' of null是npm 6.x版本的典型报错,触发原因就是代理配置为空或格式不合法。你当前环境的系统级HTTP_PROXY、HTTPS_PROXY环境变量不会被npm 6自动识别读取,加上Azure DevOps每次构建都会生成隔离的临时.npmrc文件(也就是你看到的每次路径不同的配置文件),默认不会写入代理配置,最终导致安装失败。

解决方法

方法一:为NetworkService用户配置全局npm代理(长期生效)

NetworkService用户的配置目录为日志中显示的C:\WINDOWS\ServiceProfiles\NetworkService\,按照以下步骤配置全局代理:

  • 下载微软Sysinternals工具集的PsExec工具,打开管理员权限的命令提示符,执行命令切换到NetworkService用户上下文:
    PsExec64.exe -i -u "NT AUTHORITY\NetworkService" cmd.exe
  • 在弹出的新命令行窗口中,执行以下命令配置全局代理:
# 无认证代理格式
npm config set proxy http://你的代理地址:代理端口 -g
npm config set https-proxy http://你的代理地址:代理端口 -g

# 有认证代理格式
npm config set proxy http://用户名:密码@你的代理地址:代理端口 -g
npm config set https-proxy http://用户名:密码@你的代理地址:代理端口 -g
  • 执行npm config get proxy和npm config get https-proxy验证配置,返回正确的代理地址不为空即为配置成功。

方法二:在构建流程中添加临时配置步骤(无需修改全局配置)

直接在Azure DevOps流水线的npm install步骤前,新增一个命令行任务,执行以下命令,直接为本次构建的npm会话继承系统已经配置的代理环境变量:

npm config set proxy %HTTP_PROXY%
npm config set https-proxy %HTTPS_PROXY%

该方案无需修改服务器全局配置,适配性更强,修改流水线后重新运行构建即可生效。

验证方案

配置完成后重新触发构建,若npm install步骤不再抛出startsWith相关报错即为修复成功。如果仍有问题,可以在构建任务中添加npm config ls命令,输出当前生效的所有npm配置,确认proxy和https-proxy字段存在且值正确。

内容的提问来源于stack exchange,提问作者Sebastian Siemens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:39:03