Taro 开发小程序,CPU 高使用率导致卡顿问题

1,152 阅读1分钟

本文经作者授权转载,原文作者:HD Superman,原文链接:Taro 开发小程序,CPU 高使用率导致卡顿问题

问题描述

npm run dev:weapp

启动占用大量CPU资源,导致电脑整体卡顿。

复现步骤

  1. 启动命令:npm run dev:weapp
  2. 打开任务管理器查看进程信息

系统信息

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 使用率回归正常水平,问题解决。