【问题标题】:Why does instagram throw "Expected Dict got Mapping" error on browser from time to time?为什么 instagram 不时在浏览器上抛出“Expected Dict got Mapping”错误?
【发布时间】:2019-06-26 06:29:17
【问题描述】:

pyre-fixme[6]: 第二个参数应该是 Dict[str, Any] 但得到了# Mapping[str, Any].

【问题讨论】:

    标签: google-chrome instagram


    【解决方案1】:

    这意味着 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/.../" />
    

    如您所见,它在&lt;meta&gt;&lt;link&gt; 标签之间输出,并且不包含在任何标签中,因此浏览器将其视为文本节点。这就是它在开始加载时显示在页面上的原因。

    但是由于它位于&lt;head&gt;标签中,一旦页面加载完毕,浏览器会隐藏&lt;head&gt;的内容,因为它应该只显示&lt;body&gt;的内容。

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • “不是错误,是静态代码分析错误”是什么意思?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      相关资源
      最近更新 更多