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

  1. Remove the empty/incorrect volume mount for /dashboard-app (or the dashboardAppPath option) so Cube can generate it
  2. Delete the stale directory and restart the dev server to regenerate the dashboard app
  3. Fix any earlier template-package install errors visible in startup logs (network, npm registry)
  4. 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

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


AI-assisted analysis of cube-js/cube@7d981676b3 (2026-09-02). Data as JSON: /api/errors/6d5ba56e77036ce3. Report an issue: GitHub.