Troubleshooting

Diagnose common setup, build, and serve problems - and where to get help when this page doesn't cover it.

On this page

Troubleshooting

Run doctor first

Before digging further, run the built-in health check - it catches most of the issues on this page in one shot:

bxSites doctor

It checks the JVM version, that docs/ (or src/) exists, that bxsites.yaml/.json actually parses and validates, that the required BoxLang modules are installed and activated, and - if a project-level theme/ override exists - that it satisfies the theme contract. It exits 1 if any check fails and prints what's wrong; nothing here mutates your project.

Common issues

`No docs/ directory found`

build/serve/check/etc. look for docs/ (falling back to src/) relative to the current directory, or to --projectRoot=<path> if you passed one. Either run the command from inside your project's root folder, or pass --projectRoot:

bxSites build --projectRoot=/path/to/my-docs
`bxsites.yaml`/`.json` fails to parse or validate

Run bxSites doctor to see the exact key/line the config loader rejected. Common causes: mixing tabs and spaces in YAML indentation, a stray trailing comma in JSON, or a key that expects an array (like nav or i18n.locales) written as a bare string. See Configuration for the full key reference.

`bx-markdown`/`bx-esapi`/`bx-yaml`/`bx-image` not installed/activated

build, serve, and search-index all need these four BoxLang modules. Installing bx-sites itself installs them automatically as box.json dependencies (install-bx-module bx-sites or box install bx-sites) - if you're seeing this, either the install didn't finish, or the module was registered by hand without its dependencies. Re-running box install from your project root re-resolves everything; bxSites doctor confirms which module (if any) is still missing.

A project `theme/` override fails to build

A custom theme/ folder must provide both layout.bxm and page.bxm - doctor reports which one is missing. See Themes for the full contract, or run bxSites theme:new to eject a working built-in theme as a starting point instead of writing one from scratch.

`serve` doesn't pick up a change

serve watches docs/, your bxsites.yaml/.json, and a project-level theme/ override - a change anywhere else (for example editing a file under resources/ in a module checkout, not a real project) won't trigger a rebuild. If a change genuinely isn't reflected, stop serve, run bxSites clean to clear any stale build cache, then bxSites serve again.

A build looks stale, or CI reports success but nothing changed

build doesn't delete previously built output that no longer has a matching source page. Run bxSites clean before build to remove site/ and any build cache entirely, then rebuild from scratch. If a CI step reports success but the deployed site doesn't reflect it, check the actual build-step log output for Error: - a crashed build can still exit with a misleading status in some CI setups.

A translated page shows an untranslated-page notice

That's expected, not a bug: a locale doesn't need every page translated before it's usable. A page missing from docs/i18n/<code>/ still builds at its expected URL, showing the default locale's content with a small notice at the top. See Internationalization (i18n).

`i18n:status` reports 100% but a translation still looks out of date

i18n:status checks per-locale page presence only, not per-page content parity - a locale copy can exist but still be missing a section added later to the default-locale page. Diff the locale file against its default-locale counterpart directly if you suspect this.

Still stuck?

If none of the above covers it, reach out through one of the support channels below - see Contribute for the full list:

Edit this page Download Markdown Last updated Aug 28, 2026, 3:16:38 AM