MagicMirrorOrg/MagicMirror · warning

No module name found for this configuration: ${JSON.stringif

Error message

No module name found for this configuration:
${JSON.stringify(module, null, 2)}

What it means

During startup, App iterates over config.modules and reads module.module to know which module to load. If an entry has no module name property (undefined/empty), it cannot be registered or loaded, so this warning is logged and the entry is skipped.

Source

Thrown at js/app.js:227

			}

			// get the used module positions
			Utils.getModulePositions();

			let modules = [];
			for (const module of config.modules) {
				if (module.disabled) continue;
				if (module.module) {
					if (Utils.moduleHasValidPosition(module.position) || typeof (module.position) === "undefined") {
						// Only add this module to be loaded if it is not a duplicate (repeated instance of the same module)
						if (!modules.includes(module.module)) {
							modules.push(module.module);
						}
					} else {
						Log.warn("Invalid module position found for this configuration:" + `\n${JSON.stringify(module, null, 2)}`);
					}
				} else {
					Log.warn("No module name found for this configuration:" + `\n${JSON.stringify(module, null, 2)}`);
				}
			}

			setGlobalDispatcher(new Agent({ connect: { timeout: fetch_timeout } }));

			await loadModules(modules);

			httpServer = new Server(configObj);
			const { app, io } = await httpServer.open();
			Log.log("Server started ...");

			const nodePromises = [];
			for (let nodeHelper of nodeHelpers) {
				nodeHelper.setExpressApp(app);
				nodeHelper.setSocketIO(io);

				try {
					nodePromises.push(nodeHelper.start());

View on GitHub (pinned to 4b4a59534f)

Solutions

  1. Add the missing module property to the entry: { module: "modulename", position: "..." }.
  2. Remove the empty/invalid entry from the modules array entirely.
  3. Run a JSON/JS syntax sanity check on config.js (node -e "require('./config')" style check) to spot malformed entries.

Example fix

// before (config.js)
{ position: "top_right" }
// after
{ module: "calendar", position: "top_right" }
Defensive patterns

Strategy: validation

Validate before calling

config.modules.forEach((m, i) => {
  if (typeof m !== "object" || m === null || typeof m.module !== "string" || !m.module.trim()) {
    throw new Error(`config.modules[${i}] is missing a valid 'module' property`);
  }
});

Type guard

function isModuleEntry(m) {
  return typeof m === "object" && m !== null && typeof m.module === "string" && m.module.length > 0;
}

Try / catch

null

Prevention

When it happens

Trigger: A config.js modules array contains an entry missing the required 'module' property — e.g. only a position/config object, a trailing empty object {}, or a copy/paste that dropped the module line.

Common situations: Hand-edited config.js where the module: "..." line was accidentally deleted; JSON config generators or scripts emitting empty entries; pasting a module snippet and forgetting to fill in the module name placeholder.

Related errors


AI-assisted analysis of MagicMirrorOrg/MagicMirror@4b4a59534f (2026-08-31). Data as JSON: /api/errors/5816a025716378de. Report an issue: GitHub.