很久没有往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月规定不管是未限定范围的包和范围明确的包,现在都需要认证才可以发布
解决方案
使用粒度访问令牌
1、首先在浏览器登录你的npm账号
www.npmjs.com/login
2、在页面右上角,点击您的个人资料图片,然后点击Access Token

3、点击Generate New Token

4、在Token name中输入令牌名称
5、(可选)在 Description 字段中,输入令牌的描述
6、(可选)如果您希望此令牌绕过写入操作的 2FA 要求,请选中 Bypass two-factor authentication (2FA) (最好选中绕过)

7、(可选)ip范围
8、在Packages and scopes的Permissions选择Read and Write

9、(可选)Organizations Permissions
10、Expiration过期时间最多可选90天
11、生成令牌

12、在终端绑定令牌
npm logout // 退出当前账号 npm login // 重新登录 npm config set //registry.npmjs.org/:_authToken=你的令牌 // 绑定令牌 npm publish
这样就可以成功发布npm包了
