在使用 npm 命令时,部分 Windows 用户可能会遇到以下错误:

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

该错误是由于 Windows PowerShell 的执行策略限制了脚本的运行。npm 本身是一个 PowerShell 脚本(.ps1),因此在默认策略下会被阻止执行。


一、问题原因

Windows PowerShell 的默认执行策略为 Restricted,该策略禁止运行任何脚本,以防止潜在恶意脚本的执行。


二、解决方法

方法一:临时修改执行策略(推荐)

查看当前策略

Get-ExecutionPolicy

若返回 Restricted,说明脚本执行被禁用。

修改为 RemoteSigned 策略

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  • RemoteSigned 允许运行本地脚本,仅对来自互联网的脚本要求数字签名。

  • ⚠️ 需在管理员模式下运行 PowerShell。

  1. 其他策略选项(按需选择):

    策略

    说明

    RemoteSigned

    推荐,本地脚本无限制,远程脚本需签名

    AllSigned

    所有脚本必须经过签名

    Unrestricted

    允许所有脚本,但远程脚本会警告

    Bypass

    完全不限制,无警告

    Restricted

    默认,禁止所有脚本

方法二:以绕过策略方式启动 PowerShell

如果不想永久修改策略,可使用以下命令启动一个临时放宽限制的 PowerShell 会话:

powershell -ExecutionPolicy Bypass

方法三:使用 CMD 或 Git Bash

你也可以直接使用命令提示符(CMD)或 Git Bash 等非 PowerShell 环境运行 npm,不会受此策略限制。


三、验证是否解决

执行以下命令,若正常显示版本号则表示问题已解决:

npm -v

四、补充说明

  • 该问题一般出现在使用 nvm-windows 安装的 Node.js 环境中。

  • 若你无管理员权限,可尝试仅修改当前用户的策略(使用 -Scope CurrentUser),或使用方法二临时绕过。


五、常见问题(FAQ)

Q1:运行 Set-ExecutionPolicy 提示权限不足?
A:请右键点击 PowerShell,选择 “以管理员身份运行”

Q2:没有管理员权限怎么办?
A:可尝试仅修改当前用户策略:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

或使用临时会话:

powershell -ExecutionPolicy Bypass

Q3:为什么直接输入 npm 报错,但 npm.cmd 可以运行?
A:PowerShell 默认优先执行 .ps1 脚本,而 npm.cmd 是 CMD 批处理文件,需显式输入完整名称才会执行。