cube-js/cube · error · UserError

${cubeName}.${propertyName} cannot be resolved. There's no s

Error message

${cubeName}.${propertyName} cannot be resolved. There's no such member or cube.

What it means

Same family as the cube proxy error, but raised by the dependencies-resolution proxy (cubeDependenciesProxy) used when collecting cube dependencies. Accessing `${cubeName}.member` where the member isn't a known symbol produces this UserError. It indicates the compile-time dependency graph hit a member that doesn't exist.

Source

Thrown at packages/cubejs-schema-compiler/src/compiler/CubeSymbols.ts:1586

          return () => '';
        }
        if (propertyName === '_objectWithResolvedProperties') {
          return true;
        }
        if (cube[propertyName as string]) {
          const index = depsResolveFn(propertyName, parentIndex);
          if (cube[propertyName as string].type === 'time') {
            return this.timeDimDependenciesProxy(index);
          }

          return '';
        }
        if (self.symbols[propertyName]) {
          const index = depsResolveFn(propertyName, parentIndex);
          return this.cubeDependenciesProxy(index, propertyName);
        }
        if (typeof propertyName === 'string') {
          throw new UserError(`${cubeName}.${propertyName} cannot be resolved. There's no such member or cube.`);
        }
        return undefined;
      }
    });
  }

  protected timeDimDependenciesProxy(parentIndex) {
    const self = this;
    const { depsResolveFn } = self.resolveSymbolsCallContext || {};
    return new Proxy({}, {
      get: (v, propertyName) => {
        if (propertyName === '_objectWithResolvedProperties') {
          return true;
        }
        if (propertyName === 'toString') {
          return () => '';
        }
        if (typeof propertyName === 'string') {

View on GitHub (pinned to 7d981676b3)

Solutions

  1. Verify the member name exists in the referenced cube's definition.
  2. Fix the typo or restore/rename the member across all usages (search for the old name).
  3. Ensure nested references point at symbols defined in the same cube or an imported/joined cube.
  4. Compile all data models locally (yarn tsc / schema validation) to surface stale references.

Example fix

// before
preAggregations: { main: { measures: [CUBE.totalRevenue], dimensions: [CUBE.userRegin] } }
// after
preAggregations: { main: { measures: [CUBE.totalRevenue], dimensions: [CUBE.userRegion] } }
Defensive patterns

Strategy: validation

Validate before calling

// compile the schema in CI to catch stale references
grep -rn '\${[A-Za-z_]*\.' schema/ | grep -v node_modules  # manually audit referenced member names

Try / catch

try { await compiler.compile(); } catch (e) { if (/cannot be resolved.*no such member or cube/.test(e.message)) { console.error('Stale member in SQL template:', e.message); } throw e; }

Prevention

When it happens

Trigger: During dependency collection, a SQL template references `${Cube.member}` where `member` is neither defined in the cube's symbols nor any registered cube. E.g. pre-aggregation or join SQL referencing a nonexistent member.

Common situations: Copy-pasted SQL between cubes where the member only exists in the original cube; refactoring cube names; typos in segment/measure names inside pre-aggregation definitions.

Related errors


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