解决 VS Code 终端 npm 报错:在此系统上禁止运行脚本 (PSSecurityException)
Troubleshooting
PowerShell Node.js npm VS Code Windows 异常现场
在 VS Code 终端跑前端构建(如 npm run build)时,直接被红字报错阻断:
npm : 无法加载文件 …\npm.ps1,因为在此系统上机制运行脚本。 CategoryInfo : SecurityError: (:) [],PSSecurityException FullyQualifiedErrorId : UnauthorizedAccess
核心结论
这是 PowerShell 默认执行策略限制 拦截了 npm 脚本。通过管理员权限将策略改为 RemoteSigned 即可永久解锁。
根因诊断与底层机制
1. PowerShell 沙箱机制
VS Code 默认用 PowerShell 终端。为了安全,系统预设了 Restricted(受限模式),禁掉所有 .ps1 脚本。因为 npm、yarn、pnpm 的底层都是脚本调用,碰上这个策略会被直接锁死。
2. 为什么 CMD 或 Git Bash 不报错?
CMD 和 Git Bash 不走 PowerShell 的这套安全策略。如果你切换到这些终端,脚本能跑。但为了统一在 VS Code 开发,还是建议把 PS 权限修了。
3. 工程级平替方案:RemoteSigned 策略
全栈开发避不开 .ps1 脚本(包括 Python 虚拟环境)。把策略切到 RemoteSigned 可以在保证安全的前提下放行本地生成的脚本,是开发环境的标配。
终极解法:彻底解锁 SOP
Step 1: 以管理员身份唤醒 PowerShell
- 关掉 VS Code。
- 搜索
PowerShell,右键点击 “以管理员身份运行”。
Step 2: 注入执行策略修改指令
在窗口里执行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Step 3: 确认权限修改
出现警告提示时,直接按 Y 确认。
tep 4: 验证并恢复开发
重启 VS Code,回到终端跑 npm run build,报错应该已经消失。