背景:
有个小功能,想发布一个npm包。功能写完之后,但是发现本地无论怎么login,都没有提示用户名和密码。
问题原因
npm 9 版本之后,npm建议开启two-factor-authentication,官网有给出原因,这里总结一个是因为验证机器会避免其他人用冒用该账号进行登录,第二也避免频繁发布的时候频繁登录。 当然也可以不开two-factor-authentication,每次操作需要输入npm发到邮箱的里验证码。但是那个码来的太慢太慢了。所以开启two-factor-authentication才是唯一方案。
开启two-factor-authentication
- 在网页登录npm官网,会有一个黄色的升级2FA的提示和文档,文档虽然是英文的,但是第一步操作,就算看图,也是完全可以操作明白的。官网给的是一个mac配置的例子,如果windows电脑的话选择pin码,就是锁屏密码: 文档地址
- 完成第一步,其实已经完成2FA的配置,但是要想在本地发包,还需要修改2FA
把checkbox勾掉
3. 第三步,就是在本地登录。本地控制台运行 npm login 会出现图中结果
这个时候,不要干等着,把login at后面的url贴到浏览器上,点击use security key按钮
因为我是windows电脑,所以这里的pin码就是我的锁屏密码
输入正确后,浏览器会显示,authentication successful
本地控制台也会显示登录成功的状态
- 完成以上三步,就实现了npm login。那么后续如果需要publish,直接npm publish就好,就不赘述了。