前端页面出现问题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>

成功解决

相关推荐
2501_9418779812 小时前
从配置热更新到运行时自适应的互联网工程语法演进与多语言实践随笔分享
开发语言·前端·python
云上凯歌12 小时前
01 ruoyi-vue-pro框架架构剖析
前端·vue.js·架构
华仔啊13 小时前
JavaScript 如何准确判断数据类型?5 种方法深度对比
前端·javascript
毕设十刻13 小时前
基于Vue的迅读网上书城22f4d(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
程序员小寒13 小时前
从一道前端面试题,谈 JS 对象存储特点和运算符执行顺序
开发语言·前端·javascript·面试
爱健身的小刘同学13 小时前
Vue 3 + Leaflet 地图可视化
前端·javascript·vue.js
神秘的猪头14 小时前
Ajax 数据请求:从零开始掌握异步通信
前端·javascript
稀饭5214 小时前
用changeset来管理你的npm包版本
前端·npm
TeamDev14 小时前
基于 Angular UI 的 C# 桌面应用
前端·后端·angular.js
Komorebi゛14 小时前
【CSS】斜角流光样式
前端·css