parse-community / parse-dashboard

A dashboard for managing Parse Server
https://parseplatform.org
Other
3.75k stars 1.39k forks source link

Issue with logs pages - t.match is not a function #1459

Open macarthuror opened 4 years ago

macarthuror commented 4 years ago

Make sure these boxes are checked before submitting your issue -- thanks for reporting issues back to Parse Dashboard!

Environment Setup

Running Locally

parse-dashboard: 2.0.5
parse-server: 3.10.0
express: 4.17.1

Steps to reproduce

Similar to #1112 Open up dashboard and navigate to logs page Sometimes works but mostly of the time it crash

Logs/Trace

Uncaught (in promise) TypeError: t.match is not a function
    at Yf (dashboard.bundle.js:95)
    at oa (dashboard.bundle.js:45)
    at eu (dashboard.bundle.js:45)
    at xu (dashboard.bundle.js:45)
    at yu (dashboard.bundle.js:45)
    at su (dashboard.bundle.js:45)
    at dashboard.bundle.js:45
    at t.unstable_runWithPriority (dashboard.bundle.js:53)
    at qi (dashboard.bundle.js:45)
    at Gi (dashboard.bundle.js:45)
davehibshman commented 4 years ago

Having same problem running on local Ubuntu 20.04 box: parse-dashboard: 2.10.0 parse-server: 4.2.0 express: 4.17.1

Updated: I had 6 days of log files on my server, 12 files total between .err and .info. I deleted them and restarted the server and now my logs link worked again. Might help figure the bug or others work around until fixed.

FELS-Zak commented 3 years ago

I've never had any logs - How do you build this dashboard once you make a change ?

Mabenan commented 3 years ago

I think i have found the problem for me the following line made the problem: {"message":{"ok":0,"code":40352,"codeName":"Location40352","name":"MongoError"},"code":1,"level":"error","stack":"Error: MongoError: FieldPath cannot be constructed with empty string\n at C:\\Users\\doene\\Documents\\ServerManagerDocker\\node_modules\\parse-server\\lib\\Controllers\\DatabaseController.js:1170:21\n at runMicrotasks (<anonymous>)\n at processTicksAndRejections (internal/process/task_queues.js:95:5)","timestamp":"2021-08-20T09:59:24.974Z"}

The problem was solved when i changed the message property to a string like that: {"message":"MongoError","code":1,"level":"error","stack":"Error: MongoError: FieldPath cannot be constructed with empty string\n at C:\\Users\\doene\\Documents\\ServerManagerDocker\\node_modules\\parse-server\\lib\\Controllers\\DatabaseController.js:1170:21\n at runMicrotasks (<anonymous>)\n at processTicksAndRejections (internal/process/task_queues.js:95:5)","timestamp":"2021-08-20T09:59:24.974Z"}

So my assumption here is that the message property is expected to be an string. Which it isn't for errors thrown by Mongo

Mabenan commented 3 years ago

after looking at the source i think it would be the easiest thing to check the message property and if it is not a string to execute a stringify maybe JSON.stringify.

mtrezza commented 3 years ago

Thanks for the analysis! Can you verify whether this issue still exists with the current master branch?

Mabenan commented 3 years ago

Yes it does

mtrezza commented 3 years ago

@Mabenan Thanks for confirming. The next step would be to determine whether this should be fixed in Parse Server (where the log is written) or in dashboard (where the log is parsed).

If the expectation also from Parse Server side is that message is a string, not an object, then it would be enough to JSON.stringify the message value before writing it to the log. Given the naming, I would assume that message should always be a string, so this would be a Parse Server PR.

In addition, Parse Dashboard could handle this more gracefully and not crash when not being able to read a log line, but displayed an error instead. Bu this is a secondary PR, as it is not the underlying issue.

youwhoyou commented 2 years ago

still not fixed

mtrezza commented 2 years ago

As explained above, these 2 issues:

Anyone who wants to pick up any of these 2 issues, please go ahead.