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 即可验证是否修复。

相关推荐
摇滚侠1 小时前
12 移动端 WEB 前端 WEB 开发 HTML5 + CSS3 + 移动 WEB
前端·css3·html5
ez52fF0k81 小时前
.NET11云原生CI/CD在云原生应用持续集成与交付安全加固
前端·c#·交互
独泪了无痕1 小时前
pnpm依赖管理:从零开始的实践手册
前端·npm·node.js
张风捷特烈1 小时前
状态管理大乱斗#08 | MobX 源码评析 - 透明魔法
android·前端·flutter
mCell1 小时前
HTML:AI 时代的通用表达层
前端·html·aigc
mobº1 小时前
Vue3 +TypeScript 项目总结
前端·javascript·typescript
counterxing4 小时前
我整理了一个免费开发资源目录,还做成了 CLI 和 MCP
前端·agent·ai编程
子兮曰11 小时前
Bun v1.3.14 深度解析:Image API、HTTP/3、全局虚拟存储与五十项变革
前端·后端·bun
kyriewen12 小时前
今天,百年巨头一次砍了9200人,而一个离职科学家的实话让全网睡不着觉
前端·openai·ai编程