运行ng serve --open出现'wmic.exe'未被识别为命令的报错如何处理?
报错成因
wmic.exe是Windows系统自带的WMI命令行工具,用于查询系统硬件、进程、端口等各类系统信息,适配Angular 9的对应版本Angular CLI启动ng serve --open时,会默认调用该工具获取开发服务运行所需的系统资源信息,触发该报错的常见原因如下:
- 系统环境变量PATH中缺少
C:\Windows\System32\wbem条目,导致命令提示符无法定位到wmic.exe的文件位置 - 64位Windows系统下安装了32位版本的Node.js,运行时系统会自动将
System32目录的访问重定向到SysWOW64目录,而该目录下不存在wmic.exe程序 - 使用了第三方精简/定制版Windows系统,相关组件被人为删除
潜在影响
目前项目运行无异常,是因为Angular CLI对该调用做了降级兼容处理,读取系统信息失败时会自动使用默认配置启动开发服务,不会影响基础的编译、热更新、页面打开功能。潜在问题包括:
- 后续用到Angular CLI的性能诊断、端口自动冲突检测、多服务资源调度等进阶功能时,可能触发功能异常
- 其他依赖
wmic.exe的Node.js第三方包、开发工具运行时,也可能出现同类报错 - 如果是环境变量配置错误导致的问题,后续其他依赖System32目录下内置工具的命令也会出现找不到的报错
解决方法
你可以根据自己的情况选择对应方案:
- 优先修复环境变量:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,在系统变量列表中找到
Path点击编辑,新增条目C:\Windows\System32\wbem,保存后重启命令提示符重新运行ng serve --open即可解决绝大多数情况的报错 - 64位系统用32位Node.js的场景:可以直接更换和系统架构匹配的64位Node.js版本,也可以在系统环境变量
Path中额外新增C:\Windows\SysWOW64\wbem条目 - 系统精简丢失组件的场景:如果不想重装原版系统,且现有开发功能都能正常使用,可以直接忽略该报错,绝大多数常规Angular开发场景不会受到影响
内容的提问来源于stack exchange,提问作者Biax20
相关产品推荐
相关产品推荐

