如何通过浏览器(Chrome)在运行时抛出 JavaScript 错误?

Nev*_*r K 5 javascript testing error-handling reactjs

我的目标:测试我的错误处理功能。

临时解决方案:有一个自定义路由:/error,其中包含故意产生致命错误的代码。

var a = undefined;
a.b.c // Breaks.
Run Code Online (Sandbox Code Playgroud)

上面的方法有效,但我无法使用它来测试生产站点,因为不需要该页面。我正在寻找一种通过浏览器测试它的方法。我尝试简单地将“添加 throw new Error("Custom error thrown here")到控制台。这实际上并不会在运行时破坏它。

我尝试添加断点并添加相同的代码:throw new Error("Custom error thrown here")。那也没用。

除了上述之外,还有其他更简单的方法吗?

我正在寻找一种仅通过浏览器即可完成此操作的方法。

谢谢。

Sal*_*n A 7

您没有明确提及应该如何以及在何处抛出错误。我假设您可以使用 JavaScript 文件的修改副本来引发错误。修改后的文件将驻留在您的计算机上,并且仅在您使用 Chrome 开发人员工具时使用。此功能称为本地覆盖。步骤如下:

  • 打开网页
  • 打开该网页的 Chrome 开发者工具
  • Sources面板中转到Overrides选项卡
  • 单击Select folder for overrides并选择计算机上的文件夹
    • 网页上会出现一条警告,内容为“DevTools requests full access to ...”,您必须允许
  • Sources面板中转到Page选项卡
  • 找到需要注入“抛出错误”代码的文件
  • 右键单击并选择Save for overrides

现在,您可以在计算机上或在开发人员工具中编辑文件的副本。在所需位置插入产生错误的代码。当您在开发人员工具打开的情况下重新加载页面时,Chrome 将加载 JavaScript 文件的本地副本并抛出错误。以这种方式抛出的错误将包含其起源的上下文,例如调用堆栈。如果开发人员工具关闭,则将使用 Live Copy。


Shi*_*fer 6

如果我答对了你的问题,这就是你如何从控制台做到这一点:

var script_tag = document.createElement('script');
script_tag.type = 'text/javascript';
script_tag.text = 'throw new Error("Custom error thrown here")';
document.body.appendChild(script_tag);
Run Code Online (Sandbox Code Playgroud)

或者,如果您愿意,可以通过单击触发它:

var script_tag = document.createElement('script');
script_tag.type = 'text/javascript';
script_tag.text = 'window.document.onclick = function() { throw new Error("Custom error thrown here")}';
document.body.appendChild(script_tag);
Run Code Online (Sandbox Code Playgroud)

然后你点击页面上的任意位置,抛出错误;