警告信息 "npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead"

311

我已经在我的电脑上安装了Node.js,但是当我尝试运行npm install -g create-react-app时,它会显示以下警告:

npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
npm WARN deprecated tar@2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.

changed 67 packages, and audited 68 packages in 4s

4 packages are looking for funding
  run `npm fund` for details

2 high severity vulnerabilities

Some issues need review, and may require choosing
a different dependency.

Run `npm audit` for details.

41
有没有关于为什么更改这个的帖子?写“-g”比记和输入“--location=global”容易得多。 - Joshua
6
我正在使用8.12.1版本,但仍然收到警告。 - Tadas V.
1
在某些版本的npm v8中,-g似乎被错误地设置为已弃用,请参见https://github.com/npm/cli/issues/5228。简而言之,只需升级到npm v8.13即可。 - phil_lgr
2
似乎在Node.js版本16.17.0中已经解决了。 - 1800 INFORMATION
1
@phil_lgr 谢谢,这正是我在寻找的参考资料。 - undefined
显示剩余7条评论
25个回答

333

步骤1:进入\nodejs文件夹,并通过文本编辑器打开两个文件npm.cmdnpm

图片描述

步骤2:分别对npm.cmd文件的第12行和npm文件的第23行,将prefix -g替换为prefix --location=global

图片描述

图片描述


7
尝试了这些步骤,但运行任何 npm/npx 命令时仍然收到“npm WARN config global --global--local已弃用,请改用 --location=global”和“npm ERR! Unexpected token '.'”错误信息。请帮忙翻译。 - basith
5
对我来说,编辑npm文件就是关键。当我只编辑了npm.cmd时,什么都没有发生。我在Windows上使用的是git bash。点赞。 - Jonathan Nielsen
2
请记得编辑 npx.cmd 文件,否则在运行 npx husky install 等命令时会出现相同的错误。 - miniGweek
12
我需要编辑 npxnpx.cmd 文件。 - arecaps
3
需要以管理员身份保存,但已经处理掉了该消息,谢谢! - Dan Marshall
显示剩余8条评论

199

在Windows上升级npm需要手动操作,以确保PowerShell/CMD找到新版本的npm。

对于Windows用户(感谢Lars使用此库

管理员身份打开PowerShell,并运行以下命令(有关策略的信息):

Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force

npm install --global --production npm-windows-upgrade

npm-windows-upgrade --npm-version latest

记得回到最初的策略:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force

11
今天(2022年6月15日),这解决了我的问题。 - Nilo Paim
1
好问题,优秀的答案。只需查看问题以了解执行策略。谢谢! - mggluscevic
1
这在我使用的 Windows 10 上有效(2022 年 6 月 29 日)。 - Nduati
14
运行 Set-ExecutionPolicy Unrestricted 是非常糟糕的建议。至少应该运行为 RemoteSigned (在管理员终端中运行 Set-ExecutionPolicy RemoteSigned)。 - theking2
2
完成后,我再次将策略设置回 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force。@theking2 - Arul
显示剩余11条评论

144

我采用的解决此问题的方法:

  1. 前往文件夹 C:\Program Files\nodejs
  2. 你需要编辑四个文件,它们分别是 npmnpm.cmdnpxnpx.cmd
  3. 使用文本编辑器(例如Visual Studio Code)打开这些文件
  4. 在所有四个文件中,将 prefix -g 替换为 prefix --location=global
  5. 保存所有更改(如果有提示,以管理员身份保存)
  6. 解决了!

当在tmp目录中安装软件包时,这个方法是有效的。 - Pablo Garcia
这对我来说很有效! - undefined

52

这是一个在Windows上的问题,其中npm是通过Node.js安装文件夹中的npm.cmd调用的。

请查看第12行。

:: Created by npm, please don't edit manually.
@ECHO OFF

SETLOCAL

SET "NODE_EXE=%~dp0\node.exe"
IF NOT EXIST "%NODE_EXE%" (
  SET "NODE_EXE=node"
)

SET "NPM_CLI_JS=%~dp0\node_modules\npm\bin\npm-cli.js"
FOR /F "delims=" %%F IN ('CALL "%NODE_EXE%" "%NPM_CLI_JS%" prefix -g') DO (
  SET "NPM_PREFIX_NPM_CLI_JS=%%F\node_modules\npm\bin\npm-cli.js"
)
IF EXIST "%NPM_PREFIX_NPM_CLI_JS%" (
  SET "NPM_CLI_JS=%NPM_PREFIX_NPM_CLI_JS%"
)

"%NODE_EXE%" "%NPM_CLI_JS%" %*

我提交了一个问题,并且这个警告在npm 8.12.1中得到了修复。现在-g不再被弃用。


16
我使用 npm install -g npm@latestnpm 升级到了 8.12.1,但仍然收到警告信息 npm WARN config global --global, --localare deprecated. Use--location=global instead. - Dina M.
14
在Windows上升级npm不能像Linux那样使用npm本身。你需要使用npm-windows-upgrade来更新正确位置的包装脚本npm.cmd。https://www.npmjs.com/package/npm-windows-upgrade - Lars
2
@DinaM。是的,我不再看到那个警告了。只需使用npm -g update更新npm,不确定是否有帮助。 - Huy
5
谢谢您的回复。我已经尝试过几次,但当我执行“npm -v”时,仍然会收到“npm WARN config global --global, --local are deprecated. Use --location=global instead.”的警告信息。版本号为8.12.1。 - Dina M.
1
@DinaM,请在Windows上尝试使用npm-windows-upgrade。npm会在“错误”的目录中更新自己,而不是在node安装路径中进行更新。npm-windows-upgrade将为您解决此问题。 - Lars
显示剩余4条评论

39

当我检查npm版本时,我看到了这个错误:

npm -v

显示错误:

npm警告配置全局--global--local已经弃用。请使用--location=global代替。8.11.0

解决方案:

  1. 转到“C:\Program Files\nodejs”
  2. 在该目录中打开Visual Studio Code
  3. 打开四个文件:npm、npm.cmd、npx、npx.cmd
  4. prefix -g更改为 prefix --location=global
  5. 保存并运行npm -v

Enter image description here


2
好修复!我刚刚用了这个,有趣的是你在3小时前发布了它:D - Paal Pedersen
这修复了 npm -v,但未修复 npm i -gnpm i --location=global。实际上,我所有的 npm i 命令都不能用。 - Adam Jagosz
嗨,@AdamJagosz关闭你的终端/编辑器并重新启动。如果还不行,请重启系统。 如果你已经做出了更改,那么它应该可以工作。运行:npm -v -gnpm -v。这是我的当前状态:D:\MK>npm -v -g npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead. 8.11.0 D:\MK>npm -v 8.11.0 - Art Bindu
我已经通过nvm安装了Windows版的node,所以我替换了C:\Users\adamj\AppData\Roaming\nvm\v16.16.0中的出现次数。在此之后,我得到了以下结果:npm i --location=global npm@8.13 npm ERR! Unexpected token '.'我还应该提到,在C:\Windows\System32中没有这样的文件。 - Adam Jagosz
1
太好了!警告已经消失,解决方案简短而精确。 - Zujaj Misbah Khan

17

使用:

npm install -g npm-windows-upgrade

npm-windows-upgrade
选择最新版本。

在Windows 11上,我首先安装了npm 8.16。然后按照您的建议运行了npm install -g npm-windows-upgrade。此后,npm -v仍然显示:npm WARN config global --global--local已弃用。请改用--location=global - CAK2
2
提示:npm-windows-upgrade 需要管理员权限。 - Fotis Kolytoumpas

12

你没有收到错误,而是一个警告,这意味着你的命令仍然可以使用,但在将来可能不再适用。

试试这个:

npm install --location=global create-react-app

顺便说一下,你可以不把Create React App安装为全局依赖项而使用它。像这样:

npx create-react-app your-project-name

10

8.12.1仍存在问题。

npm -v

npm警告配置全局--global--local已弃用。请改用 --location=global

8.12.1

解决方法:

管理员身份运行打开文件,否则无法编辑。

C:\Program Files\nodejs\npm.cmd

默认代码如下:

:: Created by npm, please don't edit manually.
@ECHO OFF

SETLOCAL

SET "NODE_EXE=%~dp0\node.exe"
IF NOT EXIST "%NODE_EXE%" (
  SET "NODE_EXE=node"
)

SET "NPM_CLI_JS=%~dp0\node_modules\npm\bin\npm-cli.js"
FOR /F "delims=" %%F IN ('CALL "%NODE_EXE%" "%NPM_CLI_JS%" prefix -g') DO (
  SET "NPM_PREFIX_NPM_CLI_JS=%%F\node_modules\npm\bin\npm-cli.js"
)
IF EXIST "%NPM_PREFIX_NPM_CLI_JS%" (
  SET "NPM_CLI_JS=%NPM_PREFIX_NPM_CLI_JS%"
)

"%NODE_EXE%" "%NPM_CLI_JS%" %*

将上面的代码替换为以下代码:
:: Created by npm, please don't edit manually.
@ECHO OFF

SETLOCAL

SET "NODE_EXE=%~dp0\node.exe"
IF NOT EXIST "%NODE_EXE%" (
  SET "NODE_EXE=node"
)

SET "NPM_CLI_JS=%~dp0\node_modules\npm\bin\npm-cli.js"
FOR /F "delims=" %%F IN ('CALL "%NODE_EXE%" "%NPM_CLI_JS%" prefix --location=global') DO (
  SET "NPM_PREFIX_NPM_CLI_JS=%%F\node_modules\npm\bin\npm-cli.js"
)
IF EXIST "%NPM_PREFIX_NPM_CLI_JS%" (
  SET "NPM_CLI_JS=%NPM_PREFIX_NPM_CLI_JS%"
)

"%NODE_EXE%" "%NPM_CLI_JS%" %*

npm -v

8.12.1


5

如果您使用的是Windows操作系统,请尝试以下方法,以管理员身份运行:

npm install -g npm-windows-upgrade
npm-windows-upgrade

并选择版本8.12.1(最新版本)进行安装。


1
或者只需运行 npx npm-windows-upgrade - jordanbtucker

4
使用最新的npm来解决这个问题。使用给定的命令。
npm install --global npm@latest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接