为什么Instagram会不时在浏览器上引发“ Expected Dict got Mapping”错误?

ish*_*007 9 google-chrome instagram

pyre-fixme [6]:期望Dict[str, Any]用于第二个参数,但得到# Mapping[str, Any]

Max*_*rok 8

这意味着来自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/.../" />
Run Code Online (Sandbox Code Playgroud)

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

但是由于它位于<head>标记中,所以一旦页面加载完毕,浏览器将隐藏<head>内容,因为它只应显示<body>内容。

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

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

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


tre*_*159 1

此错误来自 Instagram 的 python 后端。这不是一个错误,这是静态代码分析的错误: https: //pyre-check.org/