[data-reveal]{opacity:1!important;transform:none!important}
Building

Troubleshooting

A symptom index — map what you see to its cause and the section that explains the fix.

The recurring failure modes of DMS development look alike from the outside — a blank pane, a 404, a stale screen — while their causes live in different parts of the stack. Each symptom below maps to its cause and to the section that explains it; the linked sections own the full story.

SymptomCauseExplained in
A custom component renders blank, no console errorAuto-import name mismatch: with pathPrefix: false the name is prefix + filename only, and Vue stays silentFrontend layer
A CustomComponent pane is blank, console shows a [resolveCmsComponent] warningThe backend string and the registered component name disagree after normalization; the catch-all renders a divCustom component
You edit layer code but the dashboard shows the old versionThe dev server serves the materialized .acms copy, and a watcher missed the editFrontend layer
The backend builds clean but the page 500s when openedA Vue template or compile error in the layer — tsc never compiles the Nuxt layerFrontend layer
A link or router.push to a module page 404sThe path omits the /modules/<moduleId> prefix module pages mount underDistributable module
The backend builds and starts but the dashboard never lists your pageThe pages barrel is never imported, so the @RegisterPage decorators never runPages & components
Realtime events, presence, or notifications don't reach users on another instanceThe in-memory realtime driver — it does not cross process boundaries; multi-instance needs RedisConfiguration
Publishing to a topic reaches no subscriberThe topic is not registered on any page — topics are page-boundBackend services
The UI shows a raw cms.x.y key instead of textThe $-prefixed key is missing from one or more locale filesLocalization
Your layer's Foo.vue doesn't override the base <CmsFoo>A different prefix, or your layer loses the priority precedence (lower number wins)Frontend layer

Two habits shortcut most of these. After editing layer source, full-restart both processes — backend first, then frontend — before debugging anything that looks new (Project setup). And when a pane is blank, check the browser console first: a resolver warning distinguishes a name mismatch from a genuinely empty component.