前端页面出现问题ResizeObserver loop completed with undelivered notifications.

报错内容

ai说是因为 "某个 ResizeObserver 的回调里又触发了尺寸变化,导致浏览器不得不跳过一帧通知,以避免无限循环。"

开发环境下 webpack-dev-server 会把这条警告通过 error-overlay 弹出来,生产环境不会崩,但看着烦。

解决方法1------把警告本身吞掉

在入口文件(src/index.js 或 main.ts 最顶部)加 3 行即可,只吞 ResizeObserver 的这条 loop 警告,其它报错照常吃:

cpp 复制代码
// src/index.js
if (typeof window !== 'undefined') {
  window.addEventListener('error', e =>
    e.message?.includes('ResizeObserver loop completed with undelivered notifications') && e.preventDefault()
  );
}

但是还是不行

解决方法2------直接关掉 dev-server 的 error-overlay

package.json的 scripts 里把启动命令改成

cpp 复制代码
"start": "webpack serve --client-overlay=false"

还是不行

解决方法3

在 App.vue 文件中加入防抖函数。

cpp 复制代码
<script setup>
import { onMounted, onUnmounted } from 'vue'
import { debounce } from 'lodash'

// 防抖处理 ResizeObserver 回调
const debouncedResizeObserver = debounce(() => {
  // 这里可以添加需要防抖的逻辑
}, 100)

// 重写 ResizeObserver 构造函数
onMounted(() => {
  const OriginalResizeObserver = window.ResizeObserver
  
  window.ResizeObserver = class extends OriginalResizeObserver {
    constructor(callback) {
      const debouncedCallback = debounce(callback, 16) // 约60fps
      super(debouncedCallback)
    }
  }
})

onUnmounted(() => {
  // 清理
  debouncedResizeObserver.cancel()
})
</script>

成功解决

相关推荐
CharlesYu018 小时前
前端性能优化的第一性原理,是不断缩短“用户发起意图 → 获得可用结果”之间的时间
前端
平头哥技术团队8 小时前
Day 21 _ 页内锚点_给每段起个 id,目录写 href=_#id_,点一下页面就滚到那一段
前端·html·html5
子兮曰9 小时前
Bun v1.4.1 深度解析:从 Zig 到 Rust,一场 11 天、64 个 AI 代理的语言迁徙
前端·后端·bun
人民广场吃泡面10 小时前
什么是AI Agent?它又能给前端带来哪些效率提升?
前端·人工智能
中科三方10 小时前
两家域名注册商资质被ICANN终止:企业域名资产安全再受关注
前端·网络·安全·域名
bug总结10 小时前
uniapp vue3全局方法注册使用
前端·javascript·uni-app
华无丽言11 小时前
如何在宜搭中实现获取子表中的字段值赋值到父表中?
前端·javascript·低代码
IT_陈寒11 小时前
Vue的computed属性竟然坑了我一把
前端·人工智能·后端
威斯软科的老司机11 小时前
通俗讲解 CNN 图像识别、向量 Embedding、Softmax 概率计算这三块的简化原理
前端·人工智能·ui·数字孪生
泯泷12 小时前
手搓JSVM第 12 篇:完整最小 JSVM 实现与源码设计复盘
前端·javascript·前端框架