cube-js / cube-js/cube

TypeError: Cannot read properties of undefined (reading 'match') when accessing remote Cube definition with AsyncModule()

Open
#9,347 2 comments 0 reactions 1 assignee Claimed by @igorlukanin View on GitHub
question
Dominant language
Rust
Stars
20.8k
Forks
2.1k
Avg merge
1d 2h
Merged PRs (30d)
181

Description

**Describe the bug**
When accessing one or more remote Cubes using `asyncModule()`, the server returns the following error (running in a Docker Container):

```
cube-1 | TypeError: Cannot read properties of undefined (reading 'match')
cube-1 | at ClickHouseQuery.cubeSql (/cube/node_modules/@cubejs-backend/schema-compiler/src/adapter/BaseQuery.js:1936:41)
cube-1 | at /cube/node_modules/@cubejs-backend/schema-compiler/src/adapter/PreAggregations.js:49:95
cube-1 | at ClickHouseQuery.evaluateSymbolSqlWithContext (/cube/node_modules/@cubejs-backend/schema-compiler/src/adapter/BaseQuery.js:2581:22)
cube-1 | at PreAggregations.collectOriginalSqlPreAggregations (/cube/node_modules/@cubejs-backend/schema-compiler/src/adapter/PreAggregations.js:1063:31)
cube-1 | at /cube/node_modules/@cubejs-backend/schema-compiler/src/adapter/PreAggregations.js:49:44
cube-1 | at _map (/cube/node_modules/ramda/src/internal/_map.js:7:19)
cube-1 | at map (/cube/node_modules/ramda/src/map.js:83:14)
cube-1 | at /cube/node_modules/ramda/src/internal/_dispatchable.js:50:15
cube-1 | at /cube/node_modules/ramda/src/internal/_curry2.js:26:18
cube-1 | at f1 (/cube/node_modules/ramda/src/internal/_curry1.js:19:17)
```

The remote Cube definition is as follows:

```
[
{
name: "sales",

sql_table: "default.sales",
data_source: "default",
dimensions: {
date: {
sql: "date",
type: "time",
},
revenue: {
sql: "revenue",
type: "number",
},
cpa: {
sql: "cpa",
type: "number",
},
distribution: {
sql: "distribution",
type: "number",
},
},
measures: {
count: {
type: "count",
},
revenueAverage: {
type: "avg",
sql: "revenue",
},
revenueSum: {
type: "sum",
sql: "revenue",
},
cpaAverage: {
type: "avg",
sql: "cpa",
},
distributionAverageTest: {
type: "sum",
sql: "distribution",
},
distributionSum: {
type: "sum",
sql: "distribution",
},
},

pre_aggregations: {}
}
]
```

**To Reproduce**
Steps to reproduce the behavior:
1. Create a new Cube project using the [provided Docker template](https://cube.dev/docs/product/deployment/core).
2. Create an `asyncModule()` Cube file in the `src/cubes` folder.
3. Populate the file with the [example in Cube's documentation](https://cube.dev/docs/product/data-modeling/dynamic/javascript) replacing the URL we fetch with a remote JSON schema (or mock response) that matches the above.
4. Start a Cube instance in a Docker container using `docker compose up`.
5. See error in terminal, or access the Playground at http://localhost:4000 to see the error.

**Expected behavior**
That the Cube instance does not produce an error when being queried or accessed.

**Version:**
v1.2.21

**Additional context**
We are using the **Clickhouse Connector**.

Some attempts to fix this have been made, including:
- Removing the `preaggregations` key.
- Adding a `preaggregations` element to the output as per the documentation.
- Removing the above.
- Simplifying the schema.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.