JSON Parse error: Unrecognized token '!' - error caught by Sentry
JSON Parse error: Unrecognized token '!' - error caught by Sentry
标题中的错误被Sentry(一种错误跟踪工具)捕捉到了。下面是 Sentry 的屏幕截图 - 显示堆栈跟踪。
注意:handleMessage
所在的脚本 /en_US/iab.autofill.payment.js
是从 Facebook (link here) 加载的,我在 javascript 包中找不到该脚本,也没有与之相关的任何内容。我假设它是由第 3 方脚本加载的——我正在使用 Google Tag Manager(它也在加载 Facebook Pixel)、Segment(加载 Hotjar 和 Mixpanel)和 Snapchat。在这些脚本或它们向其发送数据的服务中没有任何更改的情况下,错误开始出现。
注意2:似乎错误被触发的频率很高,大约有10-15%的时间。我试图重现它,但考虑到它是一个 handled
错误,它没有显示在开发控制台中。
任何有关查找位置的指导将不胜感激。
我经常看到这种情况,似乎 100% 来自 iOS 上使用 Facebook 浏览器的用户(我想这就是您在使用 Facebook 应用程序时看到的浏览器) .
我试着用一个片段来调试它:
<script>
window.addEventListener('message', function (e) {
console.log(e);
JSON.parse(e.data);
console.log('foo');
}, false);
</script>
这来自您链接的图书馆。假设 e.data 是 JSON 字符串(不是对象?),没有任何保护措施似乎会破坏事物。
第二个 console.log 没有触发,所以我认为这会导致我的情况出现一些意外行为(按钮对 js 侦听器的点击没有反应等)
我不知道在 Facebook 嵌入式浏览器中是否有解决方法或方法来防止这种情况(我想它已经加载到那里)
期待听到更多信息
我也遇到过,这是因为 facebook 注入的一个脚本会 postMessage(Object),但另一个脚本会监听消息并尝试 JSON.parse 一个对象,所以它会出来一个错误。你可以使用 'vconsole' 库,并添加一个 window.addEventListener('message',(e)=>{console.log(e.data)})
然后你可以看到
显然,这个问题在几周后就消失了,我这边没有任何改变。
标题中的错误被Sentry(一种错误跟踪工具)捕捉到了。下面是 Sentry 的屏幕截图 - 显示堆栈跟踪。
注意:handleMessage
所在的脚本 /en_US/iab.autofill.payment.js
是从 Facebook (link here) 加载的,我在 javascript 包中找不到该脚本,也没有与之相关的任何内容。我假设它是由第 3 方脚本加载的——我正在使用 Google Tag Manager(它也在加载 Facebook Pixel)、Segment(加载 Hotjar 和 Mixpanel)和 Snapchat。在这些脚本或它们向其发送数据的服务中没有任何更改的情况下,错误开始出现。
注意2:似乎错误被触发的频率很高,大约有10-15%的时间。我试图重现它,但考虑到它是一个 handled
错误,它没有显示在开发控制台中。
任何有关查找位置的指导将不胜感激。
我经常看到这种情况,似乎 100% 来自 iOS 上使用 Facebook 浏览器的用户(我想这就是您在使用 Facebook 应用程序时看到的浏览器) .
我试着用一个片段来调试它:
<script>
window.addEventListener('message', function (e) {
console.log(e);
JSON.parse(e.data);
console.log('foo');
}, false);
</script>
这来自您链接的图书馆。假设 e.data 是 JSON 字符串(不是对象?),没有任何保护措施似乎会破坏事物。
第二个 console.log 没有触发,所以我认为这会导致我的情况出现一些意外行为(按钮对 js 侦听器的点击没有反应等)
我不知道在 Facebook 嵌入式浏览器中是否有解决方法或方法来防止这种情况(我想它已经加载到那里)
期待听到更多信息
我也遇到过,这是因为 facebook 注入的一个脚本会 postMessage(Object),但另一个脚本会监听消息并尝试 JSON.parse 一个对象,所以它会出来一个错误。你可以使用 'vconsole' 库,并添加一个 window.addEventListener('message',(e)=>{console.log(e.data)})
然后你可以看到
显然,这个问题在几周后就消失了,我这边没有任何改变。