执行npm publish发布npm包时报404 Not Found错误如何解决
执行
npm publish时报错核心信息:npm ERR! code E404 404 Not Found - PUT https://registry.npmjs.org/@XYZ - Not found
错误原因
- npm当前配置的源不是官方源,可能此前切换到了淘宝源、企业私有源等第三方源,第三方源无对应scope的写入权限,返回404
- 账号权限变动:当前登录的npm账号不再拥有
@XYZ这个scope的发布权限,或是该scope已被注销、被其他用户抢注 - package.json配置错误:name字段的scope大小写、包名和npm官网注册的信息不一致,或是要发布的
5.0.0版本号不符合语义化规范、此前已被占用 - 本地登录态失效:之前保存的npm登录凭证过期,权限校验不通过,npm为避免信息泄露会伪装返回404而非403错误
- 网络代理异常:本地开启的代理、VPN导致请求被错误转发,未正常到达npm官方registry
解决方法
- 检查当前npm源配置:执行
npm config get registry确认返回值为官方源地址https://registry.npmjs.org/,如果不是,执行npm config set registry https://registry.npmjs.org/切换回官方源后重试发布 - 验证登录状态:执行
npm whoami确认当前登录的账号为拥有@XYZ发布权限的账号,如果返回报错,执行npm login重新登录对应账号 - 核对package.json配置:确认name字段的scope大小写、包名和npm官网注册的信息完全一致,无拼写错误;同时确认
5.0.0版本号未被发布过,符合语义化版本规范 - 排查网络环境:临时关闭本地代理、VPN后重试发布,排除网络转发导致的请求异常
- 确认scope权限:登录npm官网检查
@XYZscope的所有权,确认当前账号在该scope的开发者列表中,拥有发布权限,如果scope已被注销需要重新创建后再发布
内容的提问来源于stack exchange,提问作者MemZ
相关产品推荐
相关产品推荐

