EvalError:Google Chrome 中的调试评估可能产生副作用

Vit*_*ian 38 google-chrome google-chrome-devtools

每次尝试计算表达式时,我都会在 Chrome 控制台中收到此错误。

EvalError: Possible side-effect in debug-evaluate
Run Code Online (Sandbox Code Playgroud)

可能是什么原因造成的?

red*_*x05 34

我想我通过阅读电子问题板上的讨论找到了这个问题。

这可能是由以下原因引起的:[检查器]添加自定义错误调度机制以进行调试评估。

希望修复此问题:[inspector] 不要在禁用副作用的情况下触发 window.onerror。

这是https://crrev.com/c/3557234中的一个疏忽,导致了一种非常奇怪的开发人员体验:window.onerror安装处理程序后,在控制台中键入或其他无副作用的调试评估会触发此处理程序。


Tik*_*olu 14

您正在检查的网站包含一个onerror事件侦听器。

\n

每次在 DevTools 中计算表达式时,最新版本 Chrome 中的新错误都会触发此事件。这包括实时表情和控制台。

\n

如果这是您自己的网站,请将这行 JavaScript 添加到您的事件侦听器中,以忽略脚本外部触发的任何错误,其中script是事件侦听器函数的第二个参数:

\n
if(!script.endsWith(".js")) return;\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,这仅适用于外部 JavaScript(在.js文件中),如果 JavaScript 嵌入在 HTML<script>标记中,它将完全禁用您的事件侦听器。

\n
\n

如果这不是您的网站,您可以在 DevTools 中暂时禁用事件侦听器,如下所示:

\n
    \n
  1. 在 DevTools 顶部,打开“Elements”选项卡
  2. \n
  3. 按“\xc2\xbb”,在“样式”、“计算”、“布局”右侧
  4. \n
  5. 选择“事件监听器”
  6. \n
  7. 查找并展开“onerror”
  8. \n
  9. 点击“删除”
  10. \n
\n

这将删除事件侦听器,但刷新页面后问题将再次出现。

\n

希望 Chrome 的下一个版本能够修复这个错误。

\n