npm账户需要登录问题npm error probably out of date. To correct this please try logging in again with优雅草央千澈解决方案
问题背景
npm error Incorrect or missing password. npm error If you were trying to login, change your password, create an npm error authentication token or enable two-factor authentication then npm error that means you likely typed your password in incorrectly. npm error Please try again, or recover your password at: npm error https://www.npmjs.com/forgot npm error npm error If you were doing some other operation then your saved credentials are npm error probably out of date. To correct this please try logging in again with : npm error npm login
今天研究一套代码遇到这个问题,提示是我需要登录npm账户,我还第一次遇到要求我登录npm账户的,说我账户密码不正确,因为这个代码他的前一个问题是
npm warn old lockfile The package-lock.json file was created with an old version of npm, npm warn old lockfile so supplemental metadata must be fetched from the registry
也就是 package-lock.json版本太低的问题,因此我执行rm package-lock.json
删除了lock文件,再次执行npm install 遇到这个问题。
当我执行npm whoami
可以查看当前npm账户,
npm error code ENEEDAUTH npm error need auth This command requires you to be logged in. npm error need auth You need to authorize this machine using `npm adduser` npm error A complete log of this run can be found in: C:\Users\Administrator\App Data\Local\npm-cache\_logs\2025-01-01T13_57_12_652Z-debug-0.log
可是提示我没有登录账户,因此需要先添加账户npm adduser
解决方案
首先我们还是要理清一下关系,npm和node是什么关系
扩展知识:
npm(Node Package Manager)是Node.js的包管理器,它用于Node.js包的发布、传播和管理。npm提供了命令行工具,使得开发者可以方便地下载、安装、升级、删除包,同时也允许开发者发布自己编写的包。
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许在服务器端运行JavaScript代码,使得开发者可以使用JavaScript来编写后端服务。
简而言之,npm是Node.js生态系统中的一个重要组成部分,它为Node.js开发者提供了一种管理和分发代码包的方式。没有npm,Node.js的模块管理和包的分发会变得非常困难。
因此很明显是因为我们要去下载的这个依赖是被要求是要有登录npm账户的,因此我们先注册npm账户。
第一步注册npm账户
打开浏览器,访问https://www.npmjs.com/signup
点击右上角 sign up 注册账户
填写信息注册账户,
回到终端 开始执行npm adduser
提示:
$ npm adduser npm notice Log in on https://registry.npmmirror.com/ Create your account at: https://registry.npmmirror.com/-/v1/login/request/session/408d5ca8-cc7d-408e-b4db-643cd2b7adca Press ENTER to open in the browser...
会直接打开浏览器,那么输入用户名,密码点登录
好吧 提示我没权限登录他们这个组织, 那就没办法了。
不甘心,不过我注意我是cnpm 我在想是不是因为我用的淘宝镜像,于是我切换镜像
先执行
npm uninstall -g cnpm
卸载cnpm,再执行npm install -g npm
提示我版本不够高,需要大于22.9.0
nvm list
查看可用的node版本列表,选择23
再次执行
npm adduser
是有点区别让直接属于账户,密码,邮箱,而不是打开浏览器。
但是没区别的是还是没进去,于是我登录看看我的账户
提示我:
You don’t have two-factor authentication (2FA) enabled on your account. Configure 2FA or visit our docs to learn more.
没有2fA认证!
然后我看到这里没有组织,我顺便添加个组织,这里提示,
暂时还是选免费方案。
提示邀请同事,我暂时跳过。
看样子已经成功创建了youyacaokeji的组织,于是我进行下一步,我去给账户来个2fa认证
看提示第一种很麻烦,要用nfc或者usb还有指纹识别都是需要硬件的,我们用第二种下载验证app
提示Authenticator我们去下载,(这个就是谷歌验证器)
完成绑定后输入动态验证码,并且这里提示你下载保存一份密钥文件,你就保存吧。
ok 组织也有了,个人账户2fa也认证了,我再试试
木哈哈哈,成功,完美解决,又是充实学习的一天,真好。
这里再继续更新——————2025年1月2日————————更新
来自知乎网友的评论带来了提醒,知乎浅色年华:
“这问题本质有人说是项目根目录上带了.npmrc,里面包含了队友的凭证,被你下载下来安装了,就出现这问题。本身这个style-loader包是没啥问题的”
然后查阅资料,
扩展知识:
.npmrc
文件是 Node.js 包管理器(npm)的配置文件,它允许开发者存储一些全局或项目的特定配置选项,比如注册镜像地址、版本锁定或者其他 npm 命令的默认参数等。这个文件的主要作用是定义 npm 的配置选项,控制 npm 在安装、发布、更新和管理包时的行为,使开发者可以根据项目的需求来自定义 npm 的行为,以便更有效地管理依赖关系、提高安全性,或者加速包的下载速度。以下是关于该文件的相关信息:
.npmrc 文件的作用
- 定义镜像源:可以切换不同的包管理源,如从 npm 官方源切换到淘宝镜像源,以提高包的下载速度。
- 管理依赖的存储路径:指定全局安装的包存放的目录。
- 保存开发依赖:自动保存使用
npm install install -D
安装的开发依赖到package.json
的devDependencies
中。 - 使用作用域包:将所有作用域包的下载路径指定到一个统一的目录。
- 安全性:不要将敏感信息(如 auth token)直接存储在公开的代码库中,建议使用环境变量或 CI/CD 平台的秘密管理功能来管理这些信息。
.npmrc 文件的配置示例
registry=https://registry.npmjs.org/ proxy=http://proxy.company.com:8080 https-proxy=https://proxy.company.com:8080 always-auth=true ca=/path/to/ca.pem auth-token=YOUR_AUTH_TOKEN prefix=/usr/local
这样的话那肯定会对我们造成影响了,那我们直接删掉.npmrc重新执行 npm install 问题解决!!!