【问题标题】:Chrome Developer Tools caches old version of JavaScript filesChrome 开发者工具缓存旧版本的 JavaScript 文件
【发布时间】:2014-06-17 09:49:23
【问题描述】:

我遇到了一个奇怪的间歇性问题,Chrome 开发者工具会挂在旧版本的 JavaScript 文件上。我将开发一些 JS 应用程序,只是找到一些东西,然后突然间我的 JavaScript 文件将从“源”选项卡上的 JavaScript 文件列表中消失。这是我发现有问题的第一个线索。

我最终发现,Chrome 开发者工具显然挂在旧版本的 JavaScript 文件上。 Chrome 本身正在从服务器请求并执行最新版本,但您无法调试 JavaScript 文件。

我向自己“证明”了这就是正在发生的事情,方法是获取一个从我的源列表中消失的特定 JavaScript 文件,并将其替换为一行 console.log 语句。

然后我重新加载了页面,并注意到 console.log 语句出现在 JavaScript 控制台中。我还在“网络”选项卡中注意到 JavaScript 文件已成功检索,并且通过网络传输的内容仅包含一行 console.log 语句。

但是,JavaScript 文件仍然没有出现在源列表中,如果我单击控制台中的文件名(它出现在控制台的右侧,记录的语句旁边),然后我跳转到源选项卡,并打开旧版本的 JavaScript 文件。

此 JavaScript 文件通过常规的 <script> 标记加载到页面上。它不是通过另一个脚本或通过 eval 动态加载的。只是一个普通的 <script> 标记,指向网络服务器上的 .js 文件。

我试过了:

  1. 确保在 DevTools 设置中选中“禁用缓存(在 DevTools 打开时)”。
  2. 在 Chrome 中手动清除我的缓存和 cookie。
  3. 重新启动 Chrome
  4. 在单独的 Chrome 选项卡中手动加载 JavaScript 文件
  5. 禁用我已安装的每个 Chrome 扩展程序/应用程序
  6. 以隐身模式运行页面
  7. 取消选中“启用 JavaScript 源映射”和“启用 CSS 源映射”

这些都没有改变行为。不信可以watch a video demonstrating this here

我确实认为这是 Chrome 的问题,因为我可以使用 Firefox 而没有这个问题...但我真的很喜欢 Chrome 和 Chrome 的开发人员工具 :-) 所以我想让它在 Chrome 中工作...

更新我将此报告为 Chrome 错误 here。如果此错误对您有影响或对您很重要,请投票和/或添加 cmets 并提供更多信息。

【问题讨论】:

  • 您使用的是 VS 和/或 IIS,或许?我时不时地遇到这个问题,我只是 Ctrl+F5 直到它最终刷新缓存。我很想看看你是否找到解决方案。
  • 如果它看起来像一个错误,然后报告它:crbug.com/new
  • 您是否配置了任何工作区映射?
  • @Cory,我没有在这个项目上使用 VS 或 IIS。 Web 服务器是 Windows 8.1 上的 Apache,IDE 是 JetBrains PhpStorm(类似于 WebStorm + PHP 支持)。我基本上一直在遵循与您相同的程序。重新加载,重新加载,重新加载,重新加载,重新加载......并且最终它起作用了。我无法确定押韵或原因。
  • @mistaecko,我没有在 Chrome 开发者工具中配置任何 workspaces。你问的是这个吗?

标签: javascript google-chrome google-chrome-devtools


【解决方案1】:

Chrome DevTools 对我来说很好用。当我为一个页面加载它时,它会在 chrome 进程的生命周期之外记住我打开了哪些源;虽然它的顺序是错误的。我在我们的 devtools 首选项中看到了两个不同之处:禁用缓存和启用映射。所以我建议:

1) 取消选中禁用缓存(在 DevTools 打开时), 2)(如果 1 不起作用)按“恢复默认值并重新加载”按钮。

【讨论】:

  • 您的解决方案有效。清除缓存也有效(设置/历史记录/清除浏览数据)有一段时间了。当我在开发人员工具调试器中打开带有断点的 Javascript 文件时,就会发生这种情况。
  • 是的,对我来说,断点也触发了这个错误。我已将其添加到错误报告中。
【解决方案2】:

Google 似乎已解决此问题。它不再发生在我身上。

【讨论】:

  • 它仍然发生在我身上:)
  • 建议您提交一份尽可能详细的错误报告。从 2014 年 5 月起,您可能会reference my bug report
  • 我仍然遇到最新版 Chrome (45.0.2454.101 (64-bit)) 的问题
  • 第一次遇到这个问题,使用版本 46.0.2490.86(64 位)
  • 我在 2018 年底使用 Chrome 版本 71 时也遇到了这个问题。令人惊讶的是它仍未修复。我得到它的方式是我缩小了一些 JS 文件,devtools 显示了缩小的源。然后我停止缩小它们为它们提供未缩小的服务,但源代码的缩小版本仍然显示在 devtools 中。我尝试将响应标头设置为不缓存。但是似乎当我刷新 Chrome 时,它​​甚至没有向(我的 Node.js)服务器发送请求。使用 FireFox 请求相同的 URL 显示服务器被命中,FF 开发工具显示正确的未修改源。
【解决方案3】:

一些代码编辑器如rubymine缓存js文件。

解决 ruby​​mine 问题:File > Invalidate Cache/Restart

【讨论】:

  • 这解决了我的问题,只有我在使用 PyCharm。
【解决方案4】:

正如https://groups.google.com/d/msg/google-chrome-developer-tools/2rolf--fJ3M/UTJQaZN3K28J 所建议的,对于开发环境,我在提供源映射时添加了这些标头:

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

而且它似乎完成了这项工作(至少目前如此)。

【讨论】:

  • 这无法解决在 chrome 中编辑 javascript 的目的。
  • 我也试过了,但并没有解决问题。似乎 Chrome 甚至没有尝试向我的服务器询问它已经缓存的资源。因此,我尝试将什么响应标头放入响应中并不重要。
【解决方案5】:

该问题在 78.0.3904.97 中仍然存在。要修复它,请运行设置 > 高级 > 重置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多