cube-js/cube · error

Unexpected member type: ${type}

Error message

Unexpected member type: ${type}

What it means

Reached the default arm of the member-type switch in generateIncludeMembers: the caller passed a type string other than 'measures', 'dimensions' or 'segments'. The input at fault is the type argument, not any schema member. In practice this signals an API misuse or a version mismatch between packages rather than a bad data model.

Source

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

          ...(resolvedMember.mask !== undefined ? { mask: resolvedMember.mask } : {}),
          ...(resolvedMember.links ? { links: resolvedMember.links } : {}),
          ...(resolvedMember.synthetic ? { synthetic: true } : {}),
        };
      } else if (type === 'segments') {
        memberDefinition = {
          sql,
          meta: memberRef.override?.meta || resolvedMember.meta,
          description: memberRef.override?.description || resolvedMember.description,
          title: memberRef.override?.title || resolvedMember.title,
          aliases: resolvedMember.aliases,
        };
      } else if (type === 'hierarchies') {
        memberDefinition = {
          title: memberRef.override?.title || resolvedMember.title,
          levels: resolvedMember.levels,
        };
      } else {
        throw new Error(`Unexpected member type: ${type}`);
      }
      return [memberRef.name || path[path.length - 1], memberDefinition];
    });
  }

  /**
   * This method is mainly used for evaluating RLS conditions and filters.
   * It allows referencing security_context (lowercase) in dynamic conditions or filter values.
   *
   * It currently does not support async calls because inner resolveSymbol and
   * resolveSymbolsCall are sync. Async support may be added later with deeper
   * refactoring.
   */
  public evaluateContextFunction(cube: any, contextFn: any, context: any = {}) {
    return this.resolveSymbolsCall(contextFn, (name: string) => {
      const resolvedSymbol = this.resolveSymbol(cube, name);
      if (resolvedSymbol) {
        return resolvedSymbol;

View on GitHub (pinned to 7d981676b3)

Solutions

  1. Pass one of the supported member types: measures, dimensions, or segments
  2. If calling from custom code, align with the version of cubejs-schema-compiler in use
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/cubejs-schema-compiler/src/compiler/CubeSymbols.ts:1161 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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