Read the statement by Michael Teeuw here.
Complete Options List for config.js
-
@broberg that’s exactly why I suggested it. The biggest problem I have, is trying to add a configuration that doesn’t have an example. 9 times out of ten I get it wrong and it’s usually because I put a comma where there shouldn’t be one or don’t put one where it should. Or put the variable in quotations when it shouldn’t be. I try to follow the format of the pre installed modules, but those don’t seem to have a consistent format either. Some have a comma at the end of a line or after a }. Some don’t.
-
@nimbus78
Anyway, All configuration files have their own structure and syntax.CONFIG.SYS
of DOS, WindowsINI
files, OSX.plist
etc, includingYAML
andJSON
.
While user need to write and modify it by manual, the syntax failure could not be escapable, even with “COMPLETED” config file. PPL will make a mistake absolutely because just it is possible.
I think you’d better to useMMM-Remote-Control
to maintain your config.js. With it, you can change onlyvalues
without bothering you about syntax. -
@Sean and we need to keep the tools available and visible.
Mm provides tools.
npm run check:config
-
@sdetweil
For myself, I don’t like currentnpm run check:config
. It has an old-schooled (ES5) javascript grammar, so sometimes it cannot understand modern style(ES6) js.
I recommend Esprima, online js validator (http://esprima.org/demo/validate.html). -
The issues you state isn’t an issue with what variables the different modules have, the issue you have can easily be remedied with a introduction class to javascript. (But I understand, not everyone will have the will or energy to get a grip on it just to get a config file right).
And I also understand that some modules aren’t really made for all to use, giving the lack of information for some.
Using the Readme file from the stock modules is good basis for a readme-template to apply to the modules one makes, and maybe it’s here we should put in more effort to clean things up, but again most 3rd-party modules are made of other users so the support (if any) is thereafter.And there is a logic to the use of Quotation marks, commas and brackets.
Strings of text needs Quotation marks “Something something text string”
Numbers need no Quotation marks 1234
Boolean values, True or False, should not have quotation marks even though they are text.Commas are use after each “line” unless the “line” is the last one. It’s easier to grasp if you put everything on one row.
modules: [{module: “alert”},{module: “updatenotification”, position: “top_bar”},{module: “clock”, position: “top_left”} ] -
@sdetweil I didn’t know about this tool. I will definitely check it out. Thank you.
-
@Sean if I understand this correctly, I can simply copy the text from my config.js file, paste it into the js validator, and it will show me any mistakes that are in my setup?
-
@broberg that is the simplest, most comprehensive explanation I’ve seen so far. That really helps to wrap my head around this. That explanation should be included in the readme file for the MagicMirror. Thank you.
-
@nimbus78 yes
-
@nimbus78 yes. Assuming you are in Windows… download notepad++. It’s free. Once you have it open go to the plug in manager and search for java or jscript plug ins. I can not think of the one that I really like at the moment but you can then copy your config to your windows box. Hit one button and it will line everything up nice and clean jscript format. It will make looking at your config a lot easier. From there it will also tell you if you are forgetting a comma or curly bracket as you add modules to your config.
Use winscp to copy the config to/from your pi.
Also. Once you have a good workin config and you wanna play with a new module. Make a back up first so that if it doesn’t work out or you are frustrated you can “restore the back up”
On the pi command line to create a back up.
Navigate to the die with your config:
cp config.filename backupfile.name
cp is the copy command and it works as “from” and then “to”
If you ever need to restore:
cp backupfile.name config.filename.
Reload and you are safely back where you started before screwing with your config.
Hopefully some of this helps you.