前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React、Vue、Ember 及其他前端开发者,请暂缓更新到 Chrome 59 浏览器

React、Vue、Ember 及其他前端开发者,请暂缓更新到 Chrome 59 浏览器

作者头像
Phodal
发布2018-01-29 13:45:07
8250
发布2018-01-29 13:45:07
举报
文章被收录于专栏:phodal

昨天下午休息的时候,发现我工作用的 Mac Mini 在疯狂地散热中,打开 Activity Manger 发现是 Chrome 浏览器导致的,再打开 Chrome 的 Task Manager 发现是 Developer Tools,如下图所示:

Chrome Task Manager

内存正常,但是这个 CPU,有点夸张。

于是,我:

  • 新起了一个用户进程,发现没有这个问题
  • 把自用的浏览器插件都禁掉,发现正常
  • 关了 Developer Tool,也发现不会出现这个情况

便怀疑是插件的问题,然后就手动地一个个开启,发现是 React Dev Tools 的问题。整理了一下触发这个问题的条件:

  1. Chrome 浏览器里安装了 React Dev Tool 插件
  2. 在 Tab 1 中打开了 Chrome 的 Developer tool
  3. 切换到 Tab 2,让 Tab 1 与 Dev Tool 在后台运行

随后,在 React Dev Tool 的 GitHub 上发现了相应的 issue:High CPU when tab is in background #739

而触发 Issue 的代码则是:

代码语言:javascript
复制
var loadCheckInterval = setInterval(function() {  createPanelIfReactLoaded();}, 1000);

但是,这个文件从 2015 年后,就没有修改过了:

React DevTool main.js 修改时间

那么,问题就出现在 setInterva 方法里。

于是,自己我便提取了相关的插件:chrome-59-show-setinterval-issue-code

而在这个方法里,关键点是:

代码语言:javascript
复制
chrome.devtools.inspectedWindow.eval(`jQuery.fn.jquery`, function(pageHasReact, err) {});

后来,发现有相当多的插件会使用这样的方式,来对检测是否含相应的环境,如:

  • Vue DevTools
  • React Dev Tools
  • Ember Inspector
  • 等等

因为我没有 Windows 电脑,所以没有试过。在他们的代码里都有相似的 setInterval,如 const checkVueInterval =setInterval(createPanelIfHasVue, 1000)

然后 CPU 就~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

已向 Chrome 报 Bug 了。

因此

如果你最近用的 Chrome 59 也异常,请禁用 React、Vue、Ember 等开发者工具。

如果你最近用的 Chrome 59 也异常,请禁用 React、Vue、Ember 等开发者工具。

你呢,中招没?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 phodal 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档