cube-js/cube · error
Dashboard app not found in '${path.resolve(options.dashboard
Error message
Dashboard app not found in '${path.resolve(options.dashboardAppPath)}' directory What it means
initDevEnv (packages/cubejs-server-core/src/core/DevServer.ts:250) serves the dashboard app from options.dashboardAppPath. If that directory does not exist or is empty (common with docker-compose mounting an empty volume), it responds 404 'Dashboard app not found in ...' because template generation did not produce the app.
Source
Thrown at packages/cubejs-server-core/src/core/DevServer.ts:250
if (lastApplyTemplatePackagesError) {
const toThrow = lastApplyTemplatePackagesError;
lastApplyTemplatePackagesError = null;
throw toThrow;
}
if (this.applyTemplatePackagesPromise) {
if (req.query.instant) {
res.status(404).json({ error: 'Dashboard app creating' });
return;
}
await this.applyTemplatePackagesPromise;
}
// docker-compose share a volume for /dashboard-app and directory will be empty
if (!fs.pathExistsSync(options.dashboardAppPath) || fs.readdirSync(options.dashboardAppPath).length === 0) {
res.status(404).json({
error: `Dashboard app not found in '${path.resolve(options.dashboardAppPath)}' directory`
});
return;
}
if (!fs.pathExistsSync(sourcePath)) {
res.status(404).json({
error: `Dashboard app corrupted. Please remove '${path.resolve(options.dashboardAppPath)}' directory and recreate it`
});
return;
}
res.json({
status: 'created',
installedTemplates: AppContainer.getPackageVersions(options.dashboardAppPath)
});View on GitHub (pinned to 7d981676b3)
Solutions
- Remove the empty/incorrect volume mount for /dashboard-app (or the dashboardAppPath option) so Cube can generate it
- Delete the stale directory and restart the dev server to regenerate the dashboard app
- Fix any earlier template-package install errors visible in startup logs (network, npm registry)
- Ensure the process has write permission to the project directory
Example fix
# before (docker-compose.yml) volumes: - ./dashboard-app:/cube/conf/dashboard-app # after volumes: []
Defensive patterns
Strategy: validation
Validate before calling
const fs = require('fs-extra');
if (!fs.pathExistsSync('./dashboard-app') || fs.readdirSync('./dashboard-app').length === 0) {
console.warn('dashboard-app missing/empty; restart dev server without mounting a volume over it');
} Prevention
- Do not mount host volumes over /dashboard-app in docker-compose
- Check startup logs for template-package install failures that leave the directory empty
- Ensure the project directory is writable by the Cube process
When it happens
Trigger: Requesting the dashboard app when options.dashboardAppPath is missing or readdirSync returns zero entries — i.e. template packages were never applied or the directory was wiped.
Common situations: docker-compose mounting a host volume over /dashboard-app (empty host dir shadows generated app); dashboard-app generation failed earlier (npm install errors) leaving the dir empty; read-only filesystems preventing generation.
Related errors
- Dashboard app creating
- Dashboard app corrupted. Please remove '${path.resolve(optio
- ${type} is required
- Wrong driver
- Your express app config is missing body-parser middleware. T
AI-assisted analysis of cube-js/cube@7d981676b3 (2026-09-02).
Data as JSON: /api/errors/6d5ba56e77036ce3.
Report an issue: GitHub.