devtools icon indicating copy to clipboard operation
devtools copied to clipboard

fix: consola crashes due to 'logObj.date.getTime is not a function'

Open eerive opened this issue 1 year ago • 3 comments

🐛 The bug

The Nuxt 3 application that I'm currently developing using Typescript has devtools enaled and always throws an error during the initialization which stops the whole page from loading correctly.

index.mjs:48  [nuxt] error caught during app initialization TypeError: logObj.date.getTime is not a function
    at Consola._logFn (core.mjs:353:70)
    at Consola.log (core.mjs:306:19)
    at dev-server-logs.js:28:8
    at index.mjs:48:66
    at index.mjs:48:56
    at async dev-server-logs.js:35:4
    at async setup (client.mjs:38:36)
    at async applyPlugin (nuxt.js:137:25)
    at async executePlugin (nuxt.js:173:9)
    at async applyPlugins (nuxt.js:187:5)

It seems that Consola is trying to use the method getTime even though logObj.date is a String?
It happens when

"[Vue warn]: Property undefined was accessed during render but is not defined on instance.
 " at Proxy.<anonymous> (eval-4efcead9.cdp)""

is called, and for some reason logObj.date is overwritten by the Object.assign function to a string instead of a Date object.

Screenshot 2024-07-25 at 12 40 55

Could this be a bug of the Consola dependency or is this due to dev-server-logs.js sending a wrongly typed object?

🛠️ To reproduce

  • Set devtools enabled

🌈 Expected behavior

Page not completely halting when this error occurs

eerive avatar Jul 25 '24 10:07 eerive

Same problem here. Started happening to me when I added a custom json payload to get custom classes to work:

export default definePayloadPlugin(() => {
  definePayloadReducer('JSONfiable', data => data && typeof data === 'object' && 'toJSON' in data && JSON.stringify(data.toJSON()))
  definePayloadReviver('JSONfiable', data => JSON.parse(data))
})

Found in this issue

Edit: I've replaced JSON.parse with superjson.parse from the package superjson. This fixed my problem.

ElPrudi avatar Mar 19 '25 11:03 ElPrudi

Feel free to open an issue in consola with some sort of reproduction. I think issue is that user payload object wrongly detected.

pi0 avatar Mar 19 '25 11:03 pi0

I have created an issue as below. https://github.com/unjs/consola/issues/351

It looks like it's currently being worked on. https://github.com/unjs/consola/pull/372

GoodWave2020 avatar Apr 03 '25 10:04 GoodWave2020