npm 警告:npm 不支持 Node.js v12.4.0

npm WARN: npm does not support Node.js v12.4.0

最近每当我 运行 任何 npm 脚本时,我都会收到以下警告:

npm WARN npm npm does not support Node.js v12.4.0
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 6, 8, 9, 10, 11.
npm WARN npm You can find the latest version at https://nodejs.org/

它说我应该升级到更新的版本,但是 v12.4 最新的版本。尽管脚本 运行 没问题,但我认为没有任何保证,而且随时可能出现问题。

我也尝试过更新 npm 以防有更新的版本使用 npm install npm -g 但出现错误:

npm ERR! path /usr/local/Cellar/node/12.4.0/lib/node_modules/npm
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/usr/local/Cellar/node/12.4.0/lib/node_modules/npm'
npm ERR!  [Error: EACCES: permission denied, access '/usr/local/Cellar/node/12.4.0/lib/node_modules/npm'] {
npm ERR!   stack: 'Error: EACCES: permission denied, access ' +
npm ERR!     "'/usr/local/Cellar/node/12.4.0/lib/node_modules/npm'",
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/Cellar/node/12.4.0/lib/node_modules/npm'
npm ERR! }
npm ERR! 
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR! 
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).

然后我发现 npm 的 Homebrew 版本无法使用 npm 本身进行更新,因此我尝试使用 brew upgrade npm 通过 Homebrew 进行更新,但出现此错误:

Error: npm 12.4.0 already installed

出于某种原因,Brew 混淆了 nodenpm 的版本。

我做错了什么,我怎样才能摆脱这个警告?

看起来像是权限问题。尝试使用 sudo

你似乎搞砸了 /usr/local 中的权限。

解决方法如下:

  1. 修复 /usr/local 权限:

    sudo chown -R `id -un`:`id -gn` /usr/local
    
  2. 清理 npm 缓存并卸载它:

    npm cache clean -f
    npm -g uninstall npm
    
  3. 重新安装 node(使用 npm

    brew reinstall node
    
  4. 升级npm:

    npm -g i npm
    

那应该带 npm@6.9.2.

在使用 brewnpm 安装软件时应避免使用 sudo,这可能会导致此类问题。

对我有用的:

如果您尝试 运行 执行此命令 "npm cache clean -f" 但它不起作用,

在你的 windows 机器上(我的是 windows 10) 访问此位置“~\AppData\Roaming\”

中的 "npm" 和 "npm-cache" 文件夹

删除"npm"和"npm-cache"这两个文件夹。

转到 windows 搜索栏并搜索 Node,右键单击打开文件位置,运行 卸载 NodeJs 的卸载程序。

然后访问nodejs.org并再次下载并安装节点,如果您已经下载了它,请访问下载它的文件夹以重新安装它。

安装后,通过在命令终端上键入 "npm -v" 来检查您的 npm 版本,以查看您计算机上安装的新更新版本的 npm。

现在一切就绪,祝编码愉快。

4Styx 发布后,如果节点声称安装了较新的版本,但 npm -v 一直显示过时的版本

Macnode 的代码与 brew 一起安装:

cd /usr/local/bin/
mv npm npm-backup
mv npx npx-backup
ln -s /usr/local/Cellar/node/14.2.0/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm 
ln -s /usr/local/Cellar/node/14.2.0/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx 
npm -version
6.14.5

我遇到了这个问题,但上面的步骤对我不起作用。我认为如果您尝试升级 Node 或 NPM 而没有同时更新另一个,则可能会发生这种情况。至少我认为这就是发生在我身上的事情。

我试图创建一个新的 Angular 项目,但我的 machine 上有一个非常旧的版本。我在升级 Node 时出错,所以我将它升级到最新版本。之后我收到错误 运行ning any npm command.

我只是通过以下方式解决了这个问题: https://nodejs.org/en/download/

获取最新版本并将其安装在 pkg 文件中 (mac)。安装完成后,我可以 运行 一切。我猜它起作用了,因为每个版本不匹配,所以如果没有另一个被降级,一个就不会 运行。

我也尝试了 brew 选项,但遇到了其他问题。我的公司 machine 有时会阻止该路径中的安装,因此它可能适用于其他人。

None 这里的答案有效。我不得不删除 npm 和 npm-cache 文件夹,然后重新安装 npm。详情在这里:

如果您有nvm,您可能会遇到安装在某个版本的节点版本不匹配的问题。

比如我不小心用了: npm i -g node --force 导致我的nvm v12.21.0 指向了 v16.5.0 (当时最新版本的node可以直接下载)

求解:我运行:

  1. 仅供参考brew uninstall nvm
  2. brew install nvm.
  3. nvm uninstall 12.21
  4. nvm install 12.21
  5. 只是为了好的措施,我 运行 npm i -g npm 导致在该虚拟节点上安装了最新版本的 npm
  6. 在某些存储库中安装后(使用 npm i)您可能还想检查您的:~/.npmrc.
email=myemail@company.com
registry=https://artifactory.company.com/npm/npm/
always-auth=true
user-agent=npm/6.14.11 node/v12.21.0 darwin x64
_authToken=siofjwoirgiowrgnioaenrvoianeoiio32noi23nio23nio23nio

它应该看起来像这样:(或者你可能没有这些。

当我尝试安装 npm 和 node.js 时,Debian 10 (buster) 也遇到了同样的问题。它们不兼容,不会更新。这是我发现对我有用的东西。

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

nodejs 包安装在不同的路径,我手动删除了旧包(在 /usr/bin/ 中)并添加了一个指向新包的符号链接(在 /usr/local/bin 中)。

sudo rm /usr/bin/node
sudo ln -s /usr/local/node /usr/bin/node

这是 运行 命令的初始打印输出。 npm 版本从 5.8.0 更新到 8.1.2。但是 nodejs 版本即使在使用 hash -r.

重启后仍停留在 10.24.0

对于 Windows,这让我发疯,并且上述所有解决方案均无效,我仍然会为 node -v 显示旧版本的节点。

对我来说,只需关闭终端 window 并重新启动即可解决问题。在此之前,没有任何缓存清除工作。我知道这听起来很愚蠢,但这最终为我解决了这个问题。希望这可以帮助其他人不要为此浪费时间。