首页 > 解决方案 > 为什么 instagram 不时在浏览器上抛出“Expected Dict got Mapping”错误?

问题描述

pyre-fixme[6]:Dict[str, Any]需要第二个参数,但得到了 # Mapping[str, Any]

标签: google-chromeinstagram

解决方案


这意味着 Instagram 员工中的某个人搞砸了。因为这个消息不应该在生产中显示。绝不。程序员使用静态代码分析在源代码实际发生之前检查潜在错误。由于一些奇怪的原因,该分析工具的输出被附加到 HTML 页面:

<meta property="al:android:url" content="https://www.instagram.com/_u/.../" />

# pyre-fixme[6]: Expected `Dict[str, Any]` for 2nd param but got
#  `Mapping[str, Any]`.
<link rel="canonical" href="https://www.instagram.com/.../" />

如您所见,它在<meta><link>标签之间输出,并且没有包裹在任何标签中,因此浏览器将其视为文本节点。这就是为什么它在开始加载时显示在页面上的原因。

但是由于它位于<head>标签中,一旦页面被加载,浏览器就会隐藏<head>内容,因为它只应该显示<body>内容。

我认为这就是自动化测试无法捕获该错误的原因,因为它不会影响最终的视觉布局。

但简单的 HTML 验证器可以轻松捕获该错误。无论如何,Instagram 的某个人绝对应该修复它。

有趣的事实:谷歌已经在 2,100,000 个 Instagram 页面上索引了这个错误。尝试谷歌搜索site:instagram.com "pyre-fixme"


推荐阅读