首先检查一下 DevTools 控制台左上角的漏斗图标(Filter)。点开看看,是不是把 Info 或者 Log 级别的输出给关掉了?如果只勾选了 Errors 或 Warnings,那你写的 console.log 肯定不会显示。试着把 Default levels 或者 All levels 选上,通常问题就解决了。
如果过滤器没问题,看控制台左上角还有一个下拉菜单,那里显示的是当前的执行上下文(Context)。如果你的页面结构比较复杂,比如有 iframe 或者使用了 Service Worker,DevTools 有时候会默认选中错误的上下文,导致主线程的日志不显示。确保你选中的是 Top 或者你那个页面的主文档上下文。
首先检查一下 DevTools 控制台左上角的漏斗图标(Filter)。点开看看,是不是把 Info 或者 Log 级别的输出给关掉了?如果只勾选了 Errors 或 Warnings,那你写的 console.log 肯定不会显示。试着把 Default levels 或者 All levels 选上,通常问题就解决了。
如果过滤器没问题,看控制台左上角还有一个下拉菜单,那里显示的是当前的执行上下文(Context)。如果你的页面结构比较复杂,比如有 iframe 或者使用了 Service Worker,DevTools 有时候会默认选中错误的上下文,导致主线程的日志不显示。确保你选中的是 Top 或者你那个页面的主文档上下文。
如果上面这两项都没问题,那就得怀疑是不是你的代码把 console.log 给覆盖了。有些第三方库或者为了兼容性,会把 console 原生方法重写。你在 JS 里面加一行代码测试一下:
如果发现确实被重写了,你可以用下面这段代码强行把原生的 log 偷回来用:
还有一种比较玄学的情况是网络延迟导致 DevTools 和手机的 WebSocket 连接断了。虽然你能看到页面,但日志通道可能挂了。这种时候,不要在电脑端点刷新,而是去手机上刷新页面,强迫 DevTools 重新建立连接,日志通常就能追回来了。
先去查那个漏斗图标,十有八九是它的问题。