【问题标题】:Chrome Debugger Not Working on Local FilesChrome 调试器无法处理本地文件
【发布时间】:2013-01-30 15:12:22
【问题描述】:

我正在尝试在本地调试一些 Javascript,但遇到了一个奇怪的问题。如果我打开一个本地文件,例如:

<html>
    <head>
        <script src="file.js"></script>
    </head>
    <body></body>
</html>

使用 file.js 就是:

(function() {
    'use strict';
    debugger
})();

它无法在调试行暂停。但是,如果我在 Firefox/Firebug 中打开完全相同的文件,它会在该行暂停。此外,如果我将调试器行添加到本地服务器上提供的文件(即http:// 文件而不是file:// 文件),Chrome 调试器会按预期暂停。

问题仅在 Chrome 中与本地文件一起出现(据我所知)。但是,我用谷歌搜索了很多,但我找不到任何类型的 Chrome 或类似的“禁用本地文件中的调试器”选项(我可能不小心启用了)。

以前有没有人见过这种情况,如果有,你能解决吗?

【问题讨论】:

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


    【解决方案1】:

    原来问题出在我添加到 Chrome 中的标志上。默认情况下,Chrome 不会让您的本地文件访问其他本地文件,因此我使用命令行标志启用了本地文件加载:

    --allow-file-access-from-files
    

    效果很好,除了它引起了我没有意识到的副作用:当您运行本地文件(或至少由其他本地文件加载的本地文件)时,Chrome 显然会将它们“沙箱化”。不幸的是,Chrome 也拒绝调试“沙盒”代码,这意味着我的调试器神秘地失败了。

    因此,对于任何想要在 Chrome 中运行本地文件(例如运行基于 Web 的测试框架)的人来说,诀窍是首先添加上述标志,然后再添加此标志:

    --allow-sandbox-debugging
    

    这样当您的代码在本地文件中包含 debugger 行时,Chrome 仍会触发调试器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      • 1970-01-01
      • 2015-03-09
      • 2021-12-01
      • 1970-01-01
      相关资源
      最近更新 更多