PowerShell 执行策略限制导致的 npm 命令无法运行的安全错误
bash
npm install
npm : 无法加载文件 D:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ npm install
+ ~~~
+ CategoryInfo : SecurityError: (:) [],PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
1. 错误原因解释
Windows PowerShell 有 执行策略(Execution Policies) 这个安全机制,默认设置为 Restricted(受限),会阻止运行任何 .ps1 脚本文件,而 npm 命令在 PowerShell 中会调用 npm.ps1 脚本,因此触发了这个安全错误。
2. 解决方案(按优先级推荐)
方案 1:临时解决(仅当前 PowerShell 窗口生效)
最简单的方式是切换到 CMD 命令提示符 执行 npm install(CMD 不受 PowerShell 执行策略限制):
- 按下
Win + R,输入cmd回车打开 CMD 窗口; - 切换到你的项目目录(如
d:\kirohome\mes-frontend); - 执行
npm install即可。
方案 2:永久解决(修改 PowerShell 执行策略)
如果想在 PowerShell 中正常使用 npm,需要放宽执行策略(推荐设置为 RemoteSigned,既安全又能运行本地脚本):
-
以管理员身份打开 PowerShell :
- 按下
Win键,搜索PowerShell,右键选择「以管理员身份运行」;
- 按下
-
执行修改执行策略的命令 :
powershellSet-ExecutionPolicy RemoteSigned -
确认修改 :
输入Y并回车确认(部分系统会显示英文提示,输入Y即可); -
验证效果 :
关闭管理员 PowerShell,重新打开普通 PowerShell,切换到项目目录执行npm install,即可正常运行。
方案 3:单次绕过(仅当前命令生效)
如果不想修改全局执行策略,也可以在执行 npm 时临时绕过限制(需管理员权限):
powershell
powershell -ExecutionPolicy Bypass -Command "npm install"
3. 执行策略说明(可选)
修改后的 RemoteSigned 执行策略规则:
- 允许运行 本地创建 的脚本(如
npm.ps1),无需数字签名; - 要求从网络下载的脚本必须有可信数字签名(兼顾安全性);
- 这是开发场景下的最佳实践,既避免了默认的严格限制,又防止恶意脚本运行。
总结
- 临时解决 :切换到 CMD 执行
npm install,无需修改任何配置; - 永久解决 :以管理员身份运行 PowerShell,执行
Set-ExecutionPolicy RemoteSigned并确认; - 核心原理 :问题根源是 PowerShell 执行策略限制,而非
npm本身,修改策略后即可正常使用。