JSON 解析错误:无法识别的令牌“!” - Sentry 捕获的错误

Nic*_*fte 10 javascript facebook sentry reactjs next.js

标题中的错误由 Sentry(一种错误跟踪工具)捕获。下面是 Sentry 的屏幕截图 - 显示了堆栈跟踪。

哨兵截图

注意:/en_US/iab.autofill.payment.js所在的脚本handleMessage是从 Facebook 加载的(链接在这里),我在 javascript 包中找不到这个脚本,也找不到任何与之相关的脚本。我假设它是由 3rd 方脚本加载的 - 我正在使用 Google 标签管理器(它也在加载 Facebook Pixel)、Segment(加载 Hotjar 和 Mixpanel)和 Snapchat。错误开始出现,这些脚本或它们发送数据的服务没有任何更改。

注 2:似乎错误经常被触发,大约 10-15% 的时间。我试图重现它,但鉴于这是一个handled错误,它没有显示在开发控制台中。

任何关于在哪里看的方向将不胜感激。

小智 6

我经常看到这种情况,而且似乎 100% 来自在 iOS 上使用 Facebook 浏览器的用户(我猜这是您在使用 Facebook 应用程序时看到的浏览器)。

我尝试用一​​个片段来调试它:

<script>
    window.addEventListener('message', function (e) {
        console.log(e);
        JSON.parse(e.data);
        console.log('foo');
    }, false);
</script>
Run Code Online (Sandbox Code Playgroud)

这是来自您链接的库。假设 e.data 是 JSON 字符串(例如不是对象?),没有任何保护措施似乎会破坏事物。

第二个 console.log 不会触发,所以我认为这在我的情况下导致了一些意外的行为(按钮对 js 监听器的点击没有反应等)

我不知道 Facebook 嵌入式浏览器中是否有解决方法或方法来防止这种情况(我猜它已加载到那里)

期待听到更多信息


Nic*_*fte 0

显然,几周后这个问题就消失了,我这边没有做任何改变。