{"record":{"id":"64883c396c32b62a","repo":"MagicMirrorOrg/MagicMirror","slug":"invalid-module-position-found-for-this-configurati","errorCode":null,"errorMessage":"Invalid module position found for this configuration:\n${JSON.stringify(module, null, 2)}","messagePattern":"Invalid module position found for this configuration:\n(.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"js/app.js","lineNumber":224,"sourceCode":"\t\t\t\t} catch {\n\t\t\t\t\tLog.warn(\"WARNING! Your custom css file is currently located in the css folder. Please move it to the config folder!\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// get the used module positions\n\t\t\tUtils.getModulePositions();\n\n\t\t\tlet modules = [];\n\t\t\tfor (const module of config.modules) {\n\t\t\t\tif (module.disabled) continue;\n\t\t\t\tif (module.module) {\n\t\t\t\t\tif (Utils.moduleHasValidPosition(module.position) || typeof (module.position) === \"undefined\") {\n\t\t\t\t\t\t// Only add this module to be loaded if it is not a duplicate (repeated instance of the same module)\n\t\t\t\t\t\tif (!modules.includes(module.module)) {\n\t\t\t\t\t\t\tmodules.push(module.module);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tLog.warn(\"Invalid module position found for this configuration:\" + `\\n${JSON.stringify(module, null, 2)}`);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tLog.warn(\"No module name found for this configuration:\" + `\\n${JSON.stringify(module, null, 2)}`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetGlobalDispatcher(new Agent({ connect: { timeout: fetch_timeout } }));\n\n\t\t\tawait loadModules(modules);\n\n\t\t\thttpServer = new Server(configObj);\n\t\t\tconst { app, io } = await httpServer.open();\n\t\t\tLog.log(\"Server started ...\");\n\n\t\t\tconst nodePromises = [];\n\t\t\tfor (let nodeHelper of nodeHelpers) {\n\t\t\t\tnodeHelper.setExpressApp(app);\n\t\t\t\tnodeHelper.setSocketIO(io);","sourceCodeStart":206,"sourceCodeEnd":242,"githubUrl":"https://github.com/MagicMirrorOrg/MagicMirror/blob/4b4a59534f7da01e4030e46029fe9dd649a7675e/js/app.js#L206-L242","documentation":"While collecting the modules to load, App validates each module's position against the known position list via Utils.moduleHasValidPosition. If a module in config.js declares a position string that is not one of the valid MagicMirror regions (and is not undefined), the module is skipped and this warning is logged.","triggerScenarios":"A config.js module entry has a position value that is a defined string but not a valid region name, e.g. position: 'top_left' instead of 'top_left' correct spelling, 'bottom_bar' typos, or a position that only certain modules support (e.g. 'fullscreen_above' misuse), so Utils.moduleHasValidPosition returns false.","commonSituations":"Typos like 'topleft', 'top_left corner', or copied positions from third-party module READMEs; assigning a non-region position to a clock/calendar module; positions valid only for special modules (e.g. 'fullscreen_below') applied to regular ones.","solutions":["Fix the position string to one of the valid regions: upper_third, upper_left, upper_center, upper_right, middle_center, lower_third, lower_left, lower_center, lower_right, bottom_bar, top_bar, fullscreen_above, fullscreen_below.","Remove the position property entirely if the module should be positionless (some modules require it to be omitted).","Check the module's own documentation — some positions are only valid for specific modules.","Consult js/module_positions or the MagicMirror docs for the exact allowed position strings."],"exampleFix":"// before (config.js)\n{ module: \"clock\", position: \"top_left_corner\" }\n// after\n{ module: \"clock\", position: \"top_left\" }","handlingStrategy":"validation","validationCode":"const VALID_POSITIONS = [\"top_bar\",\"upper_third\",\"upper_left\",\"upper_center\",\"upper_right\",\"middle_center\",\"lower_third\",\"lower_left\",\"lower_center\",\"lower_right\",\"bottom_bar\",\"fullscreen_above\",\"fullscreen_below\"];\nconfig.modules.forEach((m, i) => {\n  if (m.position && !VALID_POSITIONS.includes(m.position)) {\n    console.warn(`Module #${i} (${m.module}) has invalid position: ${m.position}`);\n  }\n});","typeGuard":"function hasValidPosition(module) {\n  return typeof module.position === \"undefined\" || VALID_POSITIONS.includes(module.position);\n}","tryCatchPattern":"null","preventionTips":["Copy position strings only from the official MagicMirror docs or module READMEs.","Keep a lint script that validates module positions against the valid-region list.","Remember positions are snake_case and region names must match exactly."],"tags":["configuration","modules","validation"],"backgroundTag":"invalid-config-value","analyzedSha":"4b4a59534f7da01e4030e46029fe9dd649a7675e","analyzedAt":"2026-08-31T21:49:42.591Z","schemaVersion":2},"datasetVersion":"2026-08-31T22:30:34.772Z"}