npm 安装/运行报错及解决方案

1. 问题现象

在 Windows PowerShell 中执行以下命令:

powershell 复制代码
npm -v

出现如下报错:

text 复制代码
npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。
有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ npm -v
+ ~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

2. 问题原因

该问题不是 Node.js 或 npm 安装失败,也不是 npm 命令不存在。

真正原因是:PowerShell 的执行策略禁止运行脚本文件

Windows 中安装 Node.js 后,npm 会提供多个可执行入口,其中包括:

text 复制代码
C:\Program Files\nodejs\npm.ps1

当在 PowerShell 中执行 npm 命令时,PowerShell 可能优先调用 npm.ps1 脚本文件。但当前系统策略禁止运行 .ps1 脚本,因此触发安全错误。

3. 解决方案一:修改当前用户的 PowerShell 执行策略(推荐)

在 PowerShell 中执行:

powershell 复制代码
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

如果系统提示确认,输入:

powershell 复制代码
Y

然后重新打开 PowerShell 或 VS Code 终端,再执行:

powershell 复制代码
npm -v

如果能正常显示 npm 版本号,说明问题已解决。

说明

RemoteSigned 表示:

  • 本地创建的 PowerShell 脚本可以运行;
  • 从网络下载的脚本需要有可信签名才能运行;
  • CurrentUser 只影响当前 Windows 用户,不需要修改整个系统策略。

该方式适合日常开发环境使用。

4. 解决方案二:临时绕过 PowerShell 脚本限制

如果不想修改 PowerShell 执行策略,可以直接调用 npm 的 .cmd 文件:

powershell 复制代码
npm.cmd -v

或者通过 cmd 执行:

powershell 复制代码
cmd /c npm -v

如果需要安装依赖,也可以使用:

powershell 复制代码
npm.cmd install

或者:

powershell 复制代码
cmd /c npm install

该方式不会修改 PowerShell 执行策略,适合临时验证或受限电脑环境。

5. 解决方案三:查看当前执行策略

如果需要确认当前 PowerShell 策略,可以执行:

powershell 复制代码
Get-ExecutionPolicy -List

重点查看 CurrentUserLocalMachine 对应的策略。

常见策略说明:

策略 含义
Restricted 禁止运行 PowerShell 脚本,容易导致 npm.ps1 无法执行
RemoteSigned 允许运行本地脚本,网络下载脚本需要签名,推荐开发环境使用
Unrestricted 允许运行大多数脚本,安全性较低,不推荐随意设置
Bypass 不阻止任何脚本,通常只适合临时场景

6. 验证方法

执行以下命令:

powershell 复制代码
node -v
npm -v

如果分别输出类似下面的版本号,则说明 Node.js 和 npm 都可以正常使用:

text 复制代码
v20.x.x
10.x.x

也可以进一步验证 npm 是否能正常安装依赖:

powershell 复制代码
npm install

7. VS Code 中的处理方式

如果是在 VS Code 终端中出现该问题:

  1. 打开 PowerShell;
  2. 执行:
powershell 复制代码
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
  1. 输入 Y 确认;
  2. 关闭 VS Code 当前终端;
  3. 新建一个终端;
  4. 重新执行:
powershell 复制代码
npm -v

8. 常见误区

误区一:以为 npm 没有安装成功

该报错并不代表 npm 没装好。报错中已经出现了:

text 复制代码
C:\Program Files\nodejs\npm.ps1

说明系统已经找到了 npm 相关文件,只是 PowerShell 不允许执行该脚本。

误区二:反复重装 Node.js

通常不需要重新安装 Node.js。只要修改 PowerShell 执行策略,或使用 npm.cmd,即可解决问题。

误区三:必须使用管理员权限

使用以下命令时通常不需要管理员权限:

powershell 复制代码
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

因为它只修改当前用户的执行策略。

9. 推荐处理流程

优先推荐使用以下步骤:

powershell 复制代码
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

确认后重新打开终端,再执行:

powershell 复制代码
npm -v

如果公司电脑或学校电脑不允许修改策略,则使用临时方案:

powershell 复制代码
npm.cmd -v

或:

powershell 复制代码
cmd /c npm -v

10. 总结

本次报错的核心原因是:PowerShell 禁止运行 npm.ps1 脚本

推荐解决方式是将当前用户的执行策略设置为:

powershell 复制代码
RemoteSigned

对应命令为:

powershell 复制代码
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

修改后重新打开终端,再运行 npm -v 即可验证是否修复。

相关推荐
kyriewen3 小时前
别再 console.log 了:5 个 Chrome DevTools 调试技巧,用过就回不去了
前端·javascript·面试
IT_陈寒5 小时前
Python搞不定字符串编码?这破玩意坑我两小时!
前端·人工智能·后端
DigitalOcean6 小时前
Laravel 开发者已在 DigitalOcean 上开通超过 10 万台服务器
前端·laravel
星始流年6 小时前
从 Tool 到 Skill——基于 LangChain 的服务端Skill实现
前端·langchain·agent
李惟6 小时前
开源本地通信库,纯客户端 RPC,像聊天一样通信
前端
YAwu116 小时前
深入解析 React 炫彩鼠标跟随标题组件:从坐标定位到动画性能
前端·react.js
GuWenyue6 小时前
排序效率低?5分钟吃透快速排序,性能飙升至O(nlogn)
前端·javascript·面试
OpenTiny社区6 小时前
🎨 看完 GenUI SDK 源码我悟了!
前端·vue.js·github
叁两7 小时前
前端转型AI Agent该如何学习?(前置篇)
前端·人工智能·node.js
何时梦醒7 小时前
深入理解递归与快速排序 —— 从基础入门到手写实现
前端·javascript