Firefox 上的 JavaScript 错误:TypeError:无法重新定义不可配置的属性“userAgent”
Posted
技术标签:
【中文标题】Firefox 上的 JavaScript 错误:TypeError:无法重新定义不可配置的属性“userAgent”【英文标题】:JavaScript error on Firefox: TypeError: can't redefine non-configurable property "userAgent" 【发布时间】:2021-05-08 00:41:28 【问题描述】:我目前在我的错误监控工具 Sentry 上收到一个奇怪的 javascript 错误,上面写着 can't redefine non-configurable property "userAgent"
。
似乎错误发生在多个页面上,但仅在 Firefox 上。此外,在所有错误中,引荐来源页面似乎都是“https://www.startpage.com/”。
但是,我无法重现错误并且不知道是什么导致了错误,因为我没有对 navigator.userAgent
var 进行任何分配。
是否还有其他人也有这个问题,或者有任何线索可能导致这个错误?
【问题讨论】:
这个很神秘。我的应用程序上也有它,我花了一段时间才弄清楚发生了什么。你碰巧在做任何浏览器检测吗?即使您没有分配给 navigator.userAgent,您是否试图用它来嗅探浏览器? 是的,我确实有一个像navigator.userAgent === 'native'
这样的用户代理检查。我将本机应用程序的 webview 中的用户代理设置为“native”,以便能够检测我的网站是在普通浏览器中还是在我的应用程序的 webview 中访问。但是在使用我的本机应用程序时不会发生错误,只是通过 Firefox 浏览器。您认为检查仍然会导致问题吗?
Firefox 扩展/设置可能会干扰用户代理。这篇文章非常有用地解释了我们不应该使用 userAgent 来确定浏览器,甚至是移动设备。 developer.mozilla.org/en-US/docs/Web/HTTP/… 所以对我来说,我的猜测是用户在 Firefox 中有一个设置或扩展,允许他们覆盖他们的 userAgent,也许这会登录到控制台,因为我们使用 userAgent 来获取浏览器信息。
@EstherCuan 非常有趣!感谢您的信息! :)
在过去的几个月里,我曾两次在 Sentry 中收到有关此错误的报告。 Firefox 86 和 85,但不知道原因是什么。 Sentry 事件中提供的信息很少。尚未为此活动创建门票。我不在应用程序代码中使用userAgent
,它被依赖项使用,所以我的第一步是升级它们。我会尝试在 Sentry 中获取更多信息。然后我们等待????
【参考方案1】:
在尝试对严格模式下“不可配置”的属性调用 Object.defineProperty
之前,我已经看到了这个确切的消息。您的代码或您的某个部门中有一些东西正在尝试使用此方法重新定义属性。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cant_delete
【讨论】:
以上是关于Firefox 上的 JavaScript 错误:TypeError:无法重新定义不可配置的属性“userAgent”的主要内容,如果未能解决你的问题,请参考以下文章
Javascript 上的文件下载在 Firefox 上不起作用
onclick javascript 无法使用 Firefox 上的选择选项完全刷新表单
GreaseMonkey - Firefox Web 控制台未显示所有 javascript 错误