本文经作者授权转载,原文作者:HD Superman,原文链接:Taro 开发小程序,CPU 高使用率导致卡顿问题
问题描述
npm run dev:weapp
启动占用大量CPU资源,导致电脑整体卡顿。
复现步骤
- 启动命令:npm run dev:weapp
- 打开任务管理器查看进程信息
系统信息
Taro v2.1.4
Taro CLI 2.1.4 environment info: System: OS: Windows 10 Binaries: Node: 10.15.0 - D:\Program Files\nodejs\node.EXE npm: 6.4.1 - D:\Program Files\nodejs\npm.CMD
定位原因
- 切换编辑器 vscode 或者 webstorm 无效果
- 关闭微信开发者工具,无效果
尝试后无效果,由于 Taro 开发支持热更新,初步怀疑是 webpack watch 监听了 node_modules 全部文件,导致打开文件句柄过多,消耗过多 CPU 资源引起的卡顿。
修改 node_modules 下文件(随便增加空格保存),发现触发了 Taro 的热更新,说明 node_modules 下文件确实都被监听了,这其实是不必要的。(找到了原因)
问题解决
webpack 提供了 watchOptions 选项用于修改监听配置。
-
尝试修改 config.js 的 watchOptions 选项:watchOptions: { ignored: /node_modules/ }, 无效果,任然监听 node_modules 下文件
-
尝试修改 mini 配置的 webpackChain 配置
mini: { webpackChain (chain, webpack) { chain.merge({ watchOptions: { ignored: /node_modules/}, }); }, },
均无效果,可能 watchOption 被 taro 构建工具写死了,找到 @tarojs/mini-runner 包下的dist/index.js 文件,手动增加 ignore 参数 watchOptions: { ignored: /node_modules/},发现 CPU 使用率回归正常水平,问题解决。