One command that has been a lifesaver for me when I’ve munged up the config.js is: “npm run config:check”. The key is to be in the MagicMirror directory when you run it. It’ll check out your config.js and is much more convenient than pasting into jslint.com.
For example here is one instance when I had multiple issues and even left the letter “v” at the bottom of my config.js file (on line 255). I would have never found that…The symptom was some modules would load and other would just say “loading” perpetually.
pi@raspberrypi:~/MagicMirror $ npm run config:check
magicmirror@2.1.3 config:check /home/pi/MagicMirror
node tests/configs/check_config.js
Checking file… /home/pi/MagicMirror/config/config.js
Line 201 col 24 Duplicate key ‘classes’.
Line 223 col 20 Duplicate key ‘classes’.
Line 255 col 1 Expected an assignment or function call and instead saw an expression.
Line 255 col 2 Missing semicolon.