【Uncaught(in promise)TypeError:0bject.hasOwn is not a function 报错解决、polyfill 支持Object.hasOwn 低版本浏览器】

一、前言

在项目开发完成后,进行版本测试过程中,更换了浏览器,遇到Uncaught(in promise)TypeError:0bject.hasOwn is not a function 报错

控制台:

在这里插入图片描述
报错定位:

在这里插入图片描述

二、原因

报错由该项目中使用的react-markdown插件导致,hasOwn是es2022新语法,旧浏览器不支持。

三、解决

提案方法 Object.hasOwnObject.prototype.hasOwnProperty.call(object, property) 具有相同的行为。

方案一:

直接修改react-markdown插件中的源码,相当于去修改了node_modules模块,你下次再npm i时还是会被重新覆盖的,当然也可以去搜索如何优雅的修改node_modules中的代码而不被覆盖。但此方案,治标不治本。

方案二:

polyfill 支持

在不支持的浏览器中,我们需要使用一些回退方式。我们利用 Object.hasOwnObject.prototype.hasOwnProperty.call(object, property) 的相同行为实现支持方案:

if (!Object.hasOwn) {
   
  Object.defineProperty
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值