-
-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Module Debugging
As it can take several seconds and even minutes to restart your MM, it may be a bottleneck for development efficiency. Here are a (very) few suggestions to help debug your MM Module while under development.
There are at least 2-3 ways to test modules:
- Directly on MM itself (native mode)
- Directly on MM itself (server mode)
- As a node server or on a different machine [TBA]
-
Run your MM in server mode, so that you still can use your RPi (or what have) in GUI mode, this also reduces it's CPU resources somewhat.
-
Disable all other modules (except clock) to make it start/run faster and to isolate your Dev Module
-
Use your browsers'
Developer Tools
(usually activated byCTRL-SHIFT-i
) to check/debug JS etc. -
Check your JS code with some external site, like jslint
-
Check your JS code with some GUI (Visual Studio?) or command line utility... [TBA]
-
Check your PM2 logs with
pm2 logs mm
or check the log files in their locations:/home/pi/.pm2/pm2.log
/home/pi/.pm2/logs/mm-error-0.log
/home/pi/.pm2/logs/mm-out-0.log
-
Finally, and most useful, check the entire npm configuration with:
npm run config:check
cd ~/MagicMirror/
npm run config:check
It's not clear to first time users what is the "console" or where it is. The reason is that it depends on what is producing the log call, where it is produced and how.
To keep things as brief as possible, to debug using the JS console.log()
calls, there are various variations available. In the MM core there are some logging wrappers that can be used in your core MMM-something.js code. These are:
Log.info('error'); # To log to stderr
Log.log('log'); # To log to stdout
Log.error('info'); # To log to stdout
However, from within your node_helper.js, if you have one, these are not available (AFAIK), so there you have to use the standard JS loggers. There are quite a few variations of those, with various success rates, depending on where you want the message to appear.
- Do you want your log message to go to the Browser (DevTools) log?
- Do you want your log message to go to the MagicMirror debug log?
Such as in:~/.pm2/logs/mm-out.log
() or~/.pm2/logs/mm-out.log
(), when running MM using pm2. - Do you want the logs to show up when running in: npm start dev?
The one logger that always seem to do the trick is:
console.error(any... data)
console.dir(any item, optional object? options)
There are probably many other and better ways to check and debug. So please add and edit this page or file an issue with info for improving debugging.
For further reading: