1. 问题现象
在 Windows PowerShell 中执行以下命令:
npm-v出现如下报错:
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 : UnauthorizedAccess2. 问题原因
该问题不是 Node.js 或 npm 安装失败,也不是 npm 命令不存在。
真正原因是:PowerShell 的执行策略禁止运行脚本文件。
Windows 中安装 Node.js 后,npm 会提供多个可执行入口,其中包括:
C:\Program Files\nodejs\npm.ps1当在 PowerShell 中执行npm命令时,PowerShell 可能优先调用npm.ps1脚本文件。但当前系统策略禁止运行.ps1脚本,因此触发安全错误。
3. 解决方案一:修改当前用户的 PowerShell 执行策略(推荐)
在 PowerShell 中执行:
Set-ExecutionPolicy-Scope CurrentUser-ExecutionPolicy RemoteSigned如果系统提示确认,输入:
Y然后重新打开 PowerShell 或 VS Code 终端,再执行:
npm-v如果能正常显示 npm 版本号,说明问题已解决。
说明
RemoteSigned表示:
- 本地创建的 PowerShell 脚本可以运行;
- 从网络下载的脚本需要有可信签名才能运行;
CurrentUser只影响当前 Windows 用户,不需要修改整个系统策略。
该方式适合日常开发环境使用。
4. 解决方案二:临时绕过 PowerShell 脚本限制
如果不想修改 PowerShell 执行策略,可以直接调用 npm 的.cmd文件:
npm.cmd-v或者通过 cmd 执行:
cmd/c npm-v如果需要安装依赖,也可以使用:
npm.cmd install或者:
cmd/c npm install该方式不会修改 PowerShell 执行策略,适合临时验证或受限电脑环境。
5. 解决方案三:查看当前执行策略
如果需要确认当前 PowerShell 策略,可以执行:
Get-ExecutionPolicy-List重点查看CurrentUser和LocalMachine对应的策略。
常见策略说明:
| 策略 | 含义 |
|---|---|
| Restricted | 禁止运行 PowerShell 脚本,容易导致 npm.ps1 无法执行 |
| RemoteSigned | 允许运行本地脚本,网络下载脚本需要签名,推荐开发环境使用 |
| Unrestricted | 允许运行大多数脚本,安全性较低,不推荐随意设置 |
| Bypass | 不阻止任何脚本,通常只适合临时场景 |
6. 验证方法
执行以下命令:
node-v npm-v如果分别输出类似下面的版本号,则说明 Node.js 和 npm 都可以正常使用:
v20.x.x 10.x.x也可以进一步验证 npm 是否能正常安装依赖:
npm install7. VS Code 中的处理方式
如果是在 VS Code 终端中出现该问题:
- 打开 PowerShell;
- 执行:
Set-ExecutionPolicy-Scope CurrentUser-ExecutionPolicy RemoteSigned- 输入
Y确认; - 关闭 VS Code 当前终端;
- 新建一个终端;
- 重新执行:
npm-v8. 常见误区
误区一:以为 npm 没有安装成功
该报错并不代表 npm 没装好。报错中已经出现了:
C:\Program Files\nodejs\npm.ps1说明系统已经找到了 npm 相关文件,只是 PowerShell 不允许执行该脚本。
误区二:反复重装 Node.js
通常不需要重新安装 Node.js。只要修改 PowerShell 执行策略,或使用npm.cmd,即可解决问题。
误区三:必须使用管理员权限
使用以下命令时通常不需要管理员权限:
Set-ExecutionPolicy-Scope CurrentUser-ExecutionPolicy RemoteSigned因为它只修改当前用户的执行策略。
9. 推荐处理流程
优先推荐使用以下步骤:
Set-ExecutionPolicy-Scope CurrentUser-ExecutionPolicy RemoteSigned确认后重新打开终端,再执行:
npm-v如果公司电脑或学校电脑不允许修改策略,则使用临时方案:
npm.cmd-v或:
cmd/c npm-v10. 总结
本次报错的核心原因是:PowerShell 禁止运行 npm.ps1 脚本。
推荐解决方式是将当前用户的执行策略设置为:
RemoteSigned对应命令为:
Set-ExecutionPolicy-Scope CurrentUser-ExecutionPolicy RemoteSigned修改后重新打开终端,再运行npm -v即可验证是否修复。