MagicMirror icon indicating copy to clipboard operation
MagicMirror copied to clipboard

[Bug] config check confused with double ,, between modules

Open sdetweil opened this issue 3 months ago • 2 comments

Environment

  • SYSTEM: manufacturer: System manufacturer; model: System Product Name; virtual: false; MM: 2.33.0
  • OS: platform: linux; distro: Ubuntu; release: 22.04.5 LTS; arch: x64; kernel: 5.15.0-152-generic
  • VERSIONS: electron: 38.1.2; used node: 22.19.0; installed node: 22.18.0; npm: 10.9.3; pm2: 6.0.13
  • ENV: XDG_SESSION_TYPE: x11; MM_CONFIG_FILE: undefined WAYLAND_DISPLAY: undefined; DISPLAY: :0.0; ELECTRON_ENABLE_GPU: undefined
  • RAM: total: 48077.11 MB; free: 32742.84 MB; used: 15334.27 MB
  • OTHERS: uptime: 67382 minutes; timeZone: America/Chicago

Which start option are you using?

node --run start

Are you using PM2?

No

Module

None

Have you tried disabling other modules?

  • [x] Yes
  • [ ] No

Have you searched if someone else has already reported the issue on the forum or in the issues?

  • [x] Yes

What did you do?

this is the config.js.sample with an extra comma between modules on line 92

Configuration
/* Config Sample
 *
 * For more information on how you can configure this file
 * see https://docs.magicmirror.builders/configuration/introduction.html
 * and https://docs.magicmirror.builders/modules/configuration.html
 *
 * You can use environment variables using a `config.js.template` file instead of `config.js`
 * which will be converted to `config.js` while starting. For more information
 * see https://docs.magicmirror.builders/configuration/introduction.html#enviromnent-variables
 */
let config = {
	address: "localhost",	// Address to listen on, can be:
							// - "localhost", "127.0.0.1", "::1" to listen on loopback interface
							// - another specific IPv4/6 to listen on a specific interface
							// - "0.0.0.0", "::" to listen on any interface
							// Default, when address config is left out or empty, is "localhost"
	port: 8080,
	basePath: "/",	// The URL path where MagicMirror² is hosted. If you are using a Reverse proxy
									// you must set the sub path here. basePath must end with a /
	ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"],	// Set [] to allow all IP addresses
									// or add a specific IPv4 of 192.168.1.5 :
									// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.1.5"],
									// or IPv4 range of 192.168.3.0 --> 192.168.3.15 use CIDR format :
									// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.3.0/28"],

	useHttps: false,			// Support HTTPS or not, default "false" will use HTTP
	httpsPrivateKey: "",	// HTTPS private key path, only require when useHttps is true
	httpsCertificate: "",	// HTTPS Certificate path, only require when useHttps is true

	language: "en",
	locale: "en-US",   // this variable is provided as a consistent location
			   // it is currently only used by 3rd party modules. no MagicMirror code uses this value
			   // as we have no usage, we  have no constraints on what this field holds
			   // see https://en.wikipedia.org/wiki/Locale_(computer_software) for the possibilities

	logLevel: ["INFO", "LOG", "WARN", "ERROR"], // Add "DEBUG" for even more logging
	timeFormat: 24,
	units: "metric",

	modules: [
		{
			module: "alert",
		},
		{
			module: "updatenotification",
			position: "top_bar"
		},
		{
			module: "clock",
			position: "top_left"
		},
		{
			module: "calendar",
			header: "US Holidays",
			position: "top_left",
			config: {
				calendars: [
					{
						fetchInterval: 7 * 24 * 60 * 60 * 1000,
						symbol: "calendar-check",
						url: "https://ics.calendarlabs.com/76/mm3137/US_Holidays.ics"
					}
				]
			}
		},
		{
			module: "compliments",
			position: "lower_third"
		},
		{
			module: "weather",
			position: "top_right",
			config: {
				weatherProvider: "openmeteo",
				type: "current",
				lat: 40.776676,
				lon: -73.971321
			}
		},
		{
			module: "weather",
			position: "top_right",
			header: "Weather Forecast",
			config: {
				weatherProvider: "openmeteo",
				type: "forecast",
				lat: 40.776676,
				lon: -73.971321
			}
		},
    ,                                            // <----- this is the error
		{
			module: "newsfeed",
			position: "bottom_bar",
			config: {
				feeds: [
					{
						title: "New York Times",
						url: "https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml"
					}
				],
				showSourceTitle: true,
				showPublishDate: true,
				broadcastNewsFeeds: true,
				broadcastNewsUpdates: true
			}
		},
	]
};

/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") { module.exports = config; }

Steps to reproduce the issue:

error is extra comma on line 92, between modules

node -c does not complain npm run config:check reports

[2025-10-10 07:57:17.294] [INFO]  Checking config file /home/sam/MagicMirror/config/config.js ... 
[2025-10-10 07:57:17.314] [INFO]  Your configuration file doesn't contain syntax errors :) 
[2025-10-10 07:57:17.315] [INFO]  Checking modules structure configuration ... 
[2025-10-10 07:57:17.343] [ERROR] This module configuration contains errors:
undefinedmust be object 

What did you expect to happen?

error report to identify the problem

What actually happened?

[2025-10-10 07:57:17.294] [INFO] Checking config file /home/sam/MagicMirror/config/config.js ... [2025-10-10 07:57:17.314] [INFO] Your configuration file doesn't contain syntax errors :) [2025-10-10 07:57:17.315] [INFO] Checking modules structure configuration ... [2025-10-10 07:57:17.343] [ERROR] This module configuration contains errors: undefinedmust be object

Additional comments

No response

Participation

  • [ ] I am willing to submit a pull request for this change.

sdetweil avatar Oct 10 '25 12:10 sdetweil

I'm preparing a PR 🙂

KristjanESPERANTO avatar Oct 10 '25 17:10 KristjanESPERANTO

If it wasn’t fatal …

sdetweil avatar Oct 10 '25 17:10 sdetweil