vConsole icon indicating copy to clipboard operation
vConsole copied to clipboard

Throw Uncaught TypeError when vConsole.destroy()

Open heyzqq opened this issue 3 years ago • 6 comments

vConsole Version: V3.15.0

Project: RuoYi-Vue

销毁 VConsole 时会报错:

import VConsole from 'vconsole'

var __vconsole

export default {
  open() {
    __vconsole = new VConsole()
  },
  close() {
    __vconsole.destroy()
    __vconsole = null
  },
  toggle() {
    if (__vconsole == null) {
      this.open()
    } else {
      this.close()
    }
  },
}

以上的操作放到了 Vue.prototype.$vconsole 中,直接调用 this.toggle(),能正常打开关闭,但是关闭后,会报如下错误:

image

heyzqq avatar Dec 01 '22 01:12 heyzqq

Details:

image

heyzqq avatar Dec 01 '22 02:12 heyzqq

看到错误信息,破案了,输出 vConsole 会报错:

console.log('close vconsole1', __vconsole)

这是变量不能读取吗,是有什么和 console.log 冲突了呢?

heyzqq avatar Dec 01 '22 02:12 heyzqq

遇到了同样问题,销毁后有报错。我是在插件on('ready')回调中进行的销毁

image

Soonze avatar Apr 26 '23 08:04 Soonze

+1销毁报错,没有其他任何多余的代码

image

export const useConsole = async () => {
  const vConsole = new VConsole()

  // call `console` methods as usual
  console.log("vConsole loaded")

  // remove it when you finish debugging
  if (!isDev) {
    vConsole.destroy()
  }
}

terwer avatar May 23 '23 02:05 terwer

@terwer 代码片段是完整的代码吗?在 ready 事件后再调用 destroy() 试试看?

Maizify avatar May 24 '23 10:05 Maizify

@Maizify 我是 Vue3 项目,在 setup 里面 vue 的 onMounted 钩子里面里面初始化,然后销毁。

我有个复现链接 https://xul67b-5173.csb.app/ 直接打开控制台能看到错误

源码:

https://codesandbox.io/p/sandbox/loving-davinci-xul67b?file=%2Fsrc%2Fcomposables%2FuseConsole.ts%3A4%2C35

https://codesandbox.io/p/sandbox/loving-davinci-xul67b?file=%2Fsrc%2FApp.vue

Vue 貌似没有 ready 事件,只有 onMounted

terwer avatar May 24 '23 11:05 terwer