2

我正在尝试在本地调试一些 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 或类似的“禁用本地文件中的调试器”选项(我可能不小心启用了)。

有没有人以前见过这个,如果有,你能解决它吗?

4

1 回答 1

3

所以事实证明问题是我添加到 Chrome 中的一个标志。默认情况下,Chrome 不会让您的本地文件访问其他本地文件,因此我使用命令行标志启用了本地文件加载:

--allow-file-access-from-files

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

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

--allow-sandbox-debugging

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

于 2013-02-18T23:20:36.853 回答