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
- Verify the member name exists in the referenced cube's definition.
- Fix the typo or restore/rename the member across all usages (search for the old name).
- Ensure nested references point at symbols defined in the same cube or an imported/joined cube.
- 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
- Run schema compilation as part of CI
- Keep pre-aggregation and join SQL in sync with member renames
- Avoid copy-pasting SQL across cubes without adjusting member paths
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
- ${cubeName}${refProperty ? `.${refProperty}` : ''}.${propert
- Expected one parameter but nothing found
- Expected only 2 parameters for timestamp filter but got: ${t
- Unsupported timestamp precision: ${this.query.timestampPreci
- Unsupported measure type replacement for ${sourceMeasure}: $
AI-assisted analysis of cube-js/cube@7d981676b3 (2026-09-02).
Data as JSON: /api/errors/39567a67c584b70a.
Report an issue: GitHub.