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

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.

当前回答

在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

其他回答

第一步:进入\nodejs文件夹,打开两个文件npm。CMD和NPM的文本编辑器

步骤2:将npm的行号12的prefix -g替换为prefix——location=global。CMD文件和NPM文件的第23行

我在Windows上遇到了这个问题,尝试了上面提到的所有方法,但没有一个有效。

这基本上是由于杀毒软件的问题。它认为npm是恶意软件,并将其屏蔽。所以,我排除了npm阻塞,它工作了。

请下载最新版本的Node for Windows

正如无数其他答案所提到的,这是由某个版本的Node(特别是与Node捆绑在一起的NPM版本)中的错误引起的,但似乎还没有其他答案提到的是解决它的最简单方法。

不需要手动编辑任何文件,甚至不需要在CLI中运行任何东西——只需从Node.js站点获取最新版本的Node.js。让它安装和编译它需要的东西,最后您将得到Node的最新版本,该版本不再包含此警告。除此之外,保持最新版本的Node/NPM是一个很好的做法,它可以节省你在2023年9月11日Node 16 EOLed时更新的时间。

我也遇到了同样的问题。之前的一个回答提出了与我相同的解决方案,但它有点不清楚: 我在跑步:

节点16.16.0

NPM 8.15.0

在两个脚本中,我将:'prefix -g'替换为'prefix——location=global'。这将解决windows控制台和shell (BASH)的问题。

修复, c: \ programfiles \ nodejs \ npm。CMD //第12行

更改前的行:

FOR /F "delims=" %%F IN ('CALL "%NODE_EXE%" "%NPM_CLI_JS%" prefix -g' (

更改后的行:

FOR /F "delims=" %%F IN ('CALL "%NODE_EXE%" "%NPM_CLI_JS%" prefix --location=global') DO (

修复, C:\programfiles\nodejs\npm //第23行

更改前的行:

NPM_PREFIX=`"$NODE_EXE" "$NPM_CLI_JS" prefix -g`

更改后的行:

NPM_PREFIX=`"$NODE_EXE" "$NPM_CLI_JS" prefix --location=global`

这些更改处理了每次调用npm时得到的警告。希望这澄清和帮助!

这是在Windows 11 Pro, Windows 10 Pro, Ubuntu 20.04.4 LTS (GNU/Linux 5.10.102.1-microsoft-standard-WSL2 x86_64)上测试的。

我使用以下shell:

GitBash PowerShell cmd Ubunto (WSL) 希望这能把事情弄清楚!

这是一个文件夹访问问题。

请遵循以下步骤:

右键单击项目文件夹 点击属性 取消选中“只读”复选框 单击Apply 然后再次尝试npm命令