{"record":{"id":"1ec457bca7946a19","repo":"medusajs/medusa","slug":"layout-file-has-no-default-export-skipping","errorCode":null,"errorMessage":"Layout file has no default export, skipping.","messagePattern":"Layout file has no default export, skipping\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"packages/admin/admin-vite-plugin/src/layouts/generate-layouts.ts","lineNumber":79,"sourceCode":"      file,\n      error: e,\n    })\n    return null\n  }\n\n  let fileHasDefaultExport = false\n  try {\n    fileHasDefaultExport = await hasDefaultExport(ast)\n  } catch (e) {\n    logger.error(`An error occurred while checking for a default export.`, {\n      file,\n      error: e,\n    })\n    return null\n  }\n\n  if (!fileHasDefaultExport) {\n    logger.warn(`Layout file has no default export, skipping.`, { file })\n    return null\n  }\n\n  if (!hasConfigExport(ast)) {\n    logger.warn(\n      `Layout file has no 'config' named export. Export 'export const config = defineLayoutConfig(...)'.`,\n      { file }\n    )\n    return null\n  }\n\n  const componentName = `LayoutComponent${index}`\n  const configName = `LayoutConfig${index}`\n\n  return {\n    import: generateImport(file, componentName, configName),\n    componentName,\n    configName,","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/medusajs/medusa/blob/5e06e544a296b9033f20f71f11c559f81a0e5739/packages/admin/admin-vite-plugin/src/layouts/generate-layouts.ts#L61-L97","documentation":"The layouts generator scans src/admin/layouts/*.ts and expects each layout file to have a default export (the React component) plus a named `config` export. If the file has no default export, the plugin cannot register the layout and skips the file with this warning.","triggerScenarios":"A .ts/.tsx file in src/admin/layouts that only exports named components, has no `export default function ...`, or exports everything via named exports.","commonSituations":"Helper/util files accidentally placed in the layouts directory; refactoring removed the default export; typo in export syntax.","solutions":["Add a default export to the layout file: `export default function MyLayout() { ... }`","Move non-layout helper files out of src/admin/layouts","Restart the dev server to rescan layouts"],"exampleFix":"// before\nexport function MyLayout() { return <div>...</div> }\n\n// after\nexport default function MyLayout() { return <div>...</div> }","handlingStrategy":"validation","validationCode":"// quick check in a prebuild script\nimport { parse } from \"@babel/core\"\n// or simply grep: files in src/admin/layouts must contain `export default`","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only place layout files (default export + config export) in src/admin/layouts","Add a lint/grep check that every file under src/admin/layouts has 'export default'"],"tags":["admin","layouts","vite-plugin","default-export"],"backgroundTag":"missing-default-export","analyzedSha":"5e06e544a296b9033f20f71f11c559f81a0e5739","analyzedAt":"2026-08-27T07:24:39.599Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}