执行ng update @angular/...返回401 Unauthorized的问题求助
看起来你遇到的ng update 401错误大概率不是工具本身的问题,我帮你梳理几个常见的排查方向,你可以逐一试试:
检查npm registry配置
先执行npm config get registry看看当前npm仓库地址。如果指向的是公司内部私有仓库,那很可能是你没有该仓库的有效访问权限;如果是误配置成私有仓库,你可以改回官方地址:npm config set registry https://registry.npmjs.org/确认npm认证信息有效性
如果你确实需要使用私有仓库,打开本地的.npmrc文件(Windows系统在C:\Users\<你的用户名>\.npmrc,Mac/Linux在~/.npmrc),检查里面的//<私有仓库地址>/:_authToken是否正确,或者直接重新登录私有仓库:npm login --registry=<你的私有仓库地址>登录后会自动更新
.npmrc里的认证信息。排查网络代理或VPN干扰
公司网络的代理服务器或者VPN有时候会拦截ng update的请求,导致认证失败。你可以先尝试关闭代理/VPN后重新执行ng update;如果必须用代理,记得配置npm的代理参数:npm config set proxy http://<代理服务器地址>:<端口> npm config set https-proxy http://<代理服务器地址>:<端口>要是代理需要账号密码,格式改成
http://<用户名>:<密码>@<代理服务器地址>:<端口>即可。清除npm缓存
缓存的旧认证信息也可能引发这类问题,执行下面的命令强制清除缓存,然后再试ng update:npm cache clean --force验证官方更新仓库的访问权限
ng update会去查询Angular官方的更新信息仓库https://update.angular.io,你可以用浏览器或者curl https://update.angular.io测试下能否正常访问。如果这个地址被网络拦截,也会导致类似的401错误。
如果以上所有步骤都试过还是无法解决,你可以考虑手动更新依赖:修改package.json里的Angular相关包版本号,然后执行npm install——不过这种方式需要你自己留意依赖的兼容性问题。
内容的提问来源于stack exchange,提问作者MattTreichel

