node.js - Angular CLI - ng serve - 来自节点进程的高 CPU 使用率
问题描述
我正在努力解决一个问题,即在本地运行任何角度应用程序时,链接到的节点进程ng serve
使用了超过 100% 的 CPU 内核。
我现在的环境是:
Angular CLI:7.3.10 节点:11.15.0 操作系统:darwin x64 (Mac OS X Catalina 10.15.4) Angular:7.2.16
我遇到过很多关于此的帖子和问题,其中常见的解决方案似乎是fsevents
为 Mac OS 问题安装。
我尝试过的事情:
- 安装 XCode 命令行工具以在安装后
node-gyp
进行重建fsevents
- 安装 (2.1.3) 的最新版本,
fsevents
因为旧版本被指定为 angular-cli (1.2.13) 的可选依赖项 - 使用不同的节点版本,尝试 12.13.0 并删除 node_modules 并进行全新安装。还尝试了最新的fevents版本
- 万一它相关我
nvm
也使用
- 万一它相关我
- 试过了
npm rebuild
- 将我的一个应用程序从 Angular 7 升级到 9,在干净安装依赖项后仍然是相同的行为,确保安装 fsevents 并尝试最新版本
无论我尝试什么,我一直在观察高 CPU 使用率,我看到它有时会上升 300-400%。
这真的阻碍了我的发展,我希望有人能提出一些我可以尝试的好主意。
做不到这一点,我想知道我是否应该尝试node
完全卸载,摆脱nvm
并从头开始。
解决方案
在 Angular 开发环境中;转译/编译会导致 CPU 峰值。当这种情况发生得太频繁时,您的系统就会出现问题。
有一些方法可以稍微减轻疼痛;
- 完全关闭文件更改检测/实时重新加载/自动编译
ng serve --live-reload false
等等ng serve --no-live-reload
,取决于你的 Angular CLI 版本
- 有更好的变化检测,只有在真正需要时才做出反应
npm install fsevents
npm rebuild fsevents
npm serve
- 忘记更改检测,根据时间间隔检查更改
ng serve --poll [ms]
CPU管理很棘手,这个问题可能有很多原因。这些只是与 Angular 开发密切相关的几种可能性。我希望这个答案能提供一些选择来尝试那些有同样问题的人。
推荐阅读
- java - 是否可以使用 setWeightSum(float) 以编程方式更改 weightSum 值?
- python - 函数调整图像大小:(-215:断言失败)!ssize.empty()在函数“resize”中
- c# - 如何根据 CheckBox 值(MVVM)过滤集合
- java - JNI:从 C++ 设置 jobjectArray
- javascript - React Native - 为什么我的条件 If/If Else 语句永远不会通过?
- javascript - 经典 ASP 查询字符串变量已设置和未设置
- oracle - 无法从 Glassfish 池连接到外部 Oracle 数据库,但我可以从 DBeaver
- python - Django Order By on Reverse Foreign Key value 删除没有关系的项目
- python - 如何将数据从屏幕存储到屏幕?
- firefox - Spring Fox (Swagger-UI) 2.9.2 如何禁用“试用”按钮