NPM发布包时报错401 BASIC realm=“Sonatype Nexus Repository Manager

335 阅读1分钟

报错信息

使用命令npm run publish-lib发布包时提示

401 BASIC realm=“Sonatype Nexus Repository Manager

在网上搜索过后,得出的结论是权限验证没通过

解决方法

  1. 查看C盘用户目录下的.npmrc文件中的_authToken

    // .npmrc
    registry=http://192.168.XXX.XXX:8081/XXX/
    //192.168.X.XXX:8081/XXX1/:_authToken=NpmToken.1f6cacd2-510c-xxxx-xxxx-xxxxxxxx
    
  2. 查看package.json文件的发布配置

    // package.json
    "publishConfig": {
        "registry": "http://192.168.X.XXX:8081/XXX2/"
    }
    
  1. 比较两个文件,.npmrc中的需要有package.json配置地址下的_authToken

    如果.npmrc中没有对应地址的_authToken,说明未在指定源中登录,需要登录

  1. 登录的话,首先使用nrm添加package.json中的镜像源,并切换至该镜像源

  2. cmd中输入npm login

    也可以不切换镜像源使用 --registry 命令

    npm login --registry=192.168.X.XXX:8081/XXX2/

  3. 输入账号,密码,邮箱

    image-20240424161915306

  4. 登录后再次发布,即可成功

    同时,.npmrc文件中也会多一条_authToken信息

    //192.168.X.XXX:8081/XXX2/:_authToken=NpmToken.1f6cacd2-510c-xxxx-xxxx-xxxxxxxx

其他问题

  1. 如果没有账号,可以联系Nexus的管理员给你添加账号
  2. 也可以尝试清楚缓存:npm cache clear --force