You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10运行npm run脚本报组策略错误如何排查解决

问题排查与解决方案

这个问题的核心特征很明确:直接执行目标命令正常、管理员权限下执行npm脚本正常、非管理员通过npm调用任意脚本都被组策略拦截,且安装Anaconda时出现同类报错,本质是Windows系统的应用控制规则拦截了非提权场景下npm生成的中转脚本进程,和npm、Angular CLI本身无关。

第一步:先定位具体被拦截的对象

不要盲目翻组策略配置,先查系统拦截日志直接定位根因:

  • 按Win+R输入eventvwr.msc回车打开事件查看器
  • 依次展开路径:应用程序和服务日志 > Microsoft > Windows > CodeIntegrity > 操作,同时查看Windows日志 > 安全分类,筛选报错时间点、来源为AppLocker或Software Restriction Policies的错误/警告事件
  • 事件详情会明确标注被拦截的程序完整路径、触发的规则ID,绝大多数同类问题在这里就能直接看到被拦截的是npm临时目录下的.cmd脚本,或是npm全局目录下的命令中转文件。

第二步:对应常见原因修复

1. 软件限制策略/AppLocker规则拦截用户目录脚本

不管是域环境下发的规则,还是之前装安全软件自动添加的本地规则,很多都会默认限制%APPDATA%\npm、用户临时目录%TEMP%下的可执行文件、脚本运行。npm在非管理员权限下执行脚本时,会先生成临时cmd脚本存到用户临时目录,调用全局安装的包时也会先走%APPDATA%\npm下的cmd中转文件,刚好命中拦截规则;直接在终端敲ng serve时是shell直接解析到对应程序的exe路径,不走临时脚本中转流程,所以不会触发拦截。
对应处理方式:

  • 个人设备可打开本地组策略编辑器(gpedit.msc),依次进入计算机配置 > Windows 设置 > 安全设置,分别检查应用控制策略 > AppLocker和软件限制策略项,把npm全局目录、用户临时目录对应的拦截规则调整为允许
  • 不想修改全局策略的话,可以直接把npm的全局安装路径、缓存路径改到不在拦截范围内的非用户目录,比如C:\npm-global、C:\npm-cache,执行以下命令配置:
npm config set prefix "C:\npm-global"
npm config set cache "C:\npm-cache"

配置完成后把C:\npm-global添加到系统环境变量的Path列表里,重启终端生效。

2. 系统/第三方安全软件的应用控制拦截

如果在本地组策略里找不到对应规则,大概率是Windows Defender应用控制(WDAC)或是第三方安全软件的规则在生效:

  • 先临时退出第三方安全软件,关闭脚本拦截、勒索软件防护类功能,测试问题是否复现
  • 打开Windows安全中心,进入设备安全性 > 内核隔离详细信息,临时关闭内存完整性功能测试,部分系统版本的WDAC规则在该功能开启时会误拦npm生成的未签名临时脚本
  • 之前安装Anaconda也触发同类报错,基本可以确认是全局生效的未签名程序/脚本拦截规则导致的,不是单个软件的配置问题。

3. npm脚本执行shell配置异常

先检查npm默认调用的脚本执行shell是否被篡改:

npm config get script-shell

如果返回值不是系统默认的cmd.exe或powershell.exe,执行以下命令改回默认即可:

npm config set script-shell cmd

验证方式

所有配置修改完成后,用普通用户权限(不要右键选管理员身份)打开PowerShell,进入项目目录执行npm run start,能正常启动构建流程就说明问题解决。

内容的提问来源于stack exchange,提问作者Kevin Dufendach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 03:24:28