错误信息再现
挺久没有往npm发过包了,最近在npm publish发包的时候发现终端报错如下
npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/vue-panel-splitter
Two-factor authentication or granular access token with bypass 2fa enabled is required to publish packages.
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy, or
npm ERR! 403 on a server you do not have access to.
然后就去网上搜索为什么会报这个错,因为以往只需要在终端登录npm账号,再publish就可以直接推送了,直到看见官方文档的说明。
错误原因分析
2025年11月规定不管是未限定范围的包和范围明确的包,现在都需要认证才可以发布,说明如下:docs.npmjs.com/requiring-2…
最简单的解决方案
使用粒度访问令牌
首先在浏览器登录你的npm账号 www.npmjs.com/login
下面是具体操作步骤
在页面右上角,点击您的个人资料图片,然后点击Access Token
点击Generate New Token
在Token name中输入令牌名称
(可选)在 Description 字段中,输入令牌的描述
(可选)如果您希望此令牌绕过写入操作的 2FA 要求,请选中 Bypass two-factor authentication (2FA) (最好选中绕过)
(可选)ip范围
在Packages and scopes的Permissions选择Read and Write
(可选)Organizations Permissions
Expiration过期时间最多可选90天
生成令牌
在终端绑定令牌
npm logout // 退出当前账号
npm login // 重新登录
npm config set //registry.npmjs.org/:_authToken=你的令牌 // 绑定令牌
npm publish
这样就可以成功发布npm包了
有问题可留言交流