Chrome调试器无法使用本地文件

时间:2013-02-14 18:06:11

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

我正在尝试在本地调试一些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或其他类似内容中找到任何“在本地文件中禁用调试程序”选项(我可能会意外启用)。

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

1 个答案:

答案 0 :(得分:2)

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

--allow-file-access-from-files

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

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

--allow-sandbox-debugging

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