远程修电脑的无名大叔叔

WordPress 写文章报错 “Object.hasOwn is not a function” 怎么办?不用动服务器,升级浏览器即可解决(实测有效)

如果您需要远程电脑维修,请加我微信咨询。

如果你的 WordPress 网站出现下面这个报错,网站本身没有坏,服务器也没有问题,99% 是因为你的浏览器版本太旧

TypeError: Object.hasOwn is not a function
    at hz (block-editor.min.js:34:40953)
    at data.min.js:3:15376
    ...

只要把浏览器升级到最新版,问题立刻解决。

一、问题现象

我这次遇到的情况是这样的:

  • 浏览网站一切正常,页面打开、前台访问都没问题
  • 但是一进后台「写文章」,编辑器直接崩溃打不开
  • F12 控制台报 TypeError: Object.hasOwn is not a function
  • 报错文件都是 WordPress 的核心 JS(block-editor.min.js、data.min.js)

关键词:只有写文章(编辑页面)崩,前台浏览完全正常。这一点非常关键,它直接帮我们缩小了排查范围。

二、为什么会出现这个错误?

Object.hasOwn 是什么?

Object.hasOwn 是 JavaScript 在 2022 年(ES2022)新增的一个方法,用来检查「某个对象有没有某个属性」。它写起来简洁、更安全,所以新版 WordPress 的编辑器代码大量使用了它。

但问题是:这个新方法不是所有浏览器都认识。浏览器只有达到一定版本才有这个方法:

表格

浏览器支持版本发布年份
Chrome / Edge93+2021 年 9 月之后
Firefox92+2021 年 9 月之后
Safari15.4+2022 年 3 月之后

如果你的浏览器版本低于上表,浏览器里就「没有」Object.hasOwn 这个方法。编辑器代码一调用它,浏览器就直接报错:Object.hasOwn is not a function—— 翻译过来就是「你想调用的这个方法,我这儿根本不存在」。

打个比方:Object.hasOwn 就像一本 2022 年才出版的新版字典,你的浏览器还是 2021 年的老版本,里面自然查不到这个词条。WordPress 代码拿着新词条去老字典里查,当然查不到、当场报错。

为什么前台没事、后台崩?

因为 WordPress 的块编辑器脚本(block-editor)只在后台写文章 / 页面时才加载。前台浏览网页根本不会加载这个脚本,所以前台一直正常;一进后台编辑,脚本一启动就崩 —— 这正是「编辑器专属脚本踩到老浏览器兼容坑」的典型特征。

网站本身有没有问题?

我实测检查了你的网站:首页正常返回、核心 JS 文件完整无损、WordPress 的 polyfill 文件也正常加载。网站一点问题都没有,纯粹是浏览器太老,听不懂新代码

三、10 秒自查:你的浏览器支持吗?

出错的浏览器里按 F12 打开控制台,输入:

Object.hasOwn

回车后看结果:

  • 显示 function hasOwn() { [native code] } → 浏览器支持,问题在别处
  • 显示 undefined → 实锤了,就是浏览器版本太旧

四、解决方案(按优先级,第一步就能解决绝大多数人)

第 1 步:升级 / 更换浏览器(90% 的人到这步就好了)

装最新版的 Chrome 或 Edge,登录后台写文章,立刻正常。

国内常见大坑:如果你用的是 360、QQ、搜狗、猎豹等国产浏览器,检查一下地址栏是不是处于「兼容模式」(IE 内核)。把「兼容模式」切换成「极速模式」即可 —— 这是很多国内网友踩过的同一个坑。

第 2 步:如果浏览器版本正常还报错

  • Ctrl + F5 硬刷新(排除旧 JS 缓存)
  • 开「无痕模式」重试(排除浏览器扩展干扰)
  • 用手机浏览器登录后台测试(排除本机环境问题)

第 3 步:以上都不行,最后才动网站

换最新浏览器还崩的话,多半是 JS 优化 / 缓存类插件(如 Autoptimize、WP Rocket、LiteSpeed Cache 等)干扰了编辑器脚本。去后台把这类插件逐个禁用测试。注意:这是最后一步,别一上来就折腾服务器和插件

五、我的真实案例:Edge 卡在 92 五年没更新

这次我自己就踩了这个坑,而且比一般情况更典型,一共三步:

  1. 检查浏览器版本:Microsoft Edge 92.0.902.67——2021 年的老版本,整整 5 年没更新
  2. 想自动更新,结果失败:浏览器提示 检查更新时出错: 无法创建该组件(错误代码 3: 0x80040154)——Edge 的更新组件坏了,卡死在这个版本
  3. 解决方案:直接去微软官方下载最新版 Edge 离线安装包,覆盖安装,绕过损坏的自动更新机制

覆盖安装成功(Edge 92 → 152),书签、密码、浏览历史全部保留。升级后进后台写文章,一切恢复正常。而且 Edge 的更新组件也被一起修好了,以后能正常自动更新,不会再卡在老版本。

手动下载 Edge 官方安装包的方法

  • 微软官方直链(64 位):https://go.microsoft.com/fwlink/?LinkID=2093437
  • 或直接访问微软 Edge 官网下载页

下载后直接运行安装包(官方 MSI 格式),一路下一步即可,会保留你的全部书签、密码和浏览历史,无需担心数据丢失。

六、总结与预防

  1. 遇到 Object.hasOwn is not a function,先怀疑浏览器,别急着折腾服务器
  2. 判断标准:在控制台输入 Object.hasOwn,返回 undefined 就是浏览器太旧
  3. 解决方法:升级浏览器 / 国产浏览器切极速模式 / 最后才查插件
  4. 预防建议:保持浏览器自动更新开启,不要用各类「优化软件」关闭浏览器的更新服务,否则几个月后老版本浏览器又会遇到各种新兼容问题

踩坑不可怕,关键是知道坑在哪里。希望这篇文章能帮你少走弯路,5 分钟解决问题。


本文为真实排查记录,网站:3z9w.com,运行环境 WordPress 7.1 + zibll 子比主题 9.0。

THE END
喜欢就支持一下吧
分享