Skip to content

TypeError: Cannot read properties of undefined (reading '0') using client.openSession(); #264

Open
@scott16lloyd

Description

@scott16lloyd

Previously working code causing a TypeError: Cannot read properties of undefined (reading '0'). This code is from the following example: https://github.com/databricks/databricks-sql-nodejs/blob/HEAD/examples/usage.js

const { DBSQLClient } = require('@databricks/sql');
import { DBSQLLogger, LogLevel } from '@databricks/sql';
import { NextResponse } from "next/server";



export async function POST(){

const logger = new DBSQLLogger({ filepath: 'log.txt', level: LogLevel.debug });
    
    
const client = new DBSQLClient({ logger: logger });
console.log("CREATED CLIENT");

client
  .connect({
    host: process.env.DATABRICKS_SERVER_HOSTNAME,
    path: process.env.DATABRICKS_HTTP_PATH,
    token: process.env.DATABRICKS_TOKEN,
  })
  .then(async (client: { openSession: () => any; close: () => any; }) => {
    const session = await client.openSession();
    console.log("SESSION CREATED");

    const queryOperation = await session.executeStatement('SELECT "Hello, World!"');
    const result = await queryOperation.fetchAll();
    await queryOperation.close();

    console.table(result);

    await session.close();
    await client.close();
    return NextResponse.json(result);
  })
  .catch((error: any) => {
    console.log(error);
    if (error instanceof Error) {  
        console.error("Error executing query: ", error);  
        return NextResponse.json(  
          { error: "Failed to execute query: ", details: error.message },  
          { status: 500 }  
        );  
      }  
  });
}

Console output:

{"level":"info","message":"Created DBSQLClient"}
CREATED CLIENT
TypeError: Cannot read properties of undefined (reading '0')
    at isInsideNodeModules (node:internal/util:508:17)
    at showFlaggedDeprecation (node:buffer:178:8)
    at new Buffer (node:buffer:266:3)
    at new module.exports (webpack-internal:///(rsc)/./node_modules/node-int64/Int64.js:65:34)
    at DBSQLClient.eval (webpack-internal:///(rsc)/./node_modules/@databricks/sql/dist/DBSQLClient.js:197:111)
    at Generator.next (<anonymous>)
    at eval (webpack-internal:///(rsc)/./node_modules/@databricks/sql/dist/DBSQLClient.js:31:71)
    at new Promise (<anonymous>)
    at __awaiter (webpack-internal:///(rsc)/./node_modules/@databricks/sql/dist/DBSQLClient.js:27:12)
    at DBSQLClient.openSession (webpack-internal:///(rsc)/./node_modules/@databricks/sql/dist/DBSQLClient.js:196:16)
    at eval (webpack-internal:///(rsc)/./app/api/databricks-test/route.ts:25:38)
Error executing query:  TypeError: Cannot read properties of undefined (reading '0')
    at isInsideNodeModules (node:internal/util:508:17)
    at showFlaggedDeprecation (node:buffer:178:8)
    at new Buffer (node:buffer:266:3)
    at new module.exports (webpack-internal:///(rsc)/./node_modules/node-int64/Int64.js:65:34)
    at DBSQLClient.eval (webpack-internal:///(rsc)/./node_modules/@databricks/sql/dist/DBSQLClient.js:197:111)
    at Generator.next (<anonymous>)
    at eval (webpack-internal:///(rsc)/./node_modules/@databricks/sql/dist/DBSQLClient.js:31:71)
    at new Promise (<anonymous>)
    at __awaiter (webpack-internal:///(rsc)/./node_modules/@databricks/sql/dist/DBSQLClient.js:27:12)
    at DBSQLClient.openSession (webpack-internal:///(rsc)/./node_modules/@databricks/sql/dist/DBSQLClient.js:196:16)
    at eval (webpack-internal:///(rsc)/./app/api/databricks-test/route.ts:25:38)
 ⨯ Error: No response is returned from route handler '/home/slloyd/database_ai_assistant/app/api/databricks-test/route.ts'. Ensure you return a `Response` or a `NextResponse` in all branches of your handler.
    at /home/slloyd/database_ai_assistant/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:53611
    at async e_.execute (/home/slloyd/database_ai_assistant/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:44747)
    at async e_.handle (/home/slloyd/database_ai_assistant/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:54700)
    at async doRender (/home/slloyd/database_ai_assistant/node_modules/next/dist/server/base-server.js:1377:42)
    at async cacheEntry.responseCache.get.routeKind (/home/slloyd/database_ai_assistant/node_modules/next/dist/server/base-server.js:1599:28)
 POST /api/databricks-test 500 in 133ms

The only change made was adding:

webpack: (config) => {
       config.resolve.alias.lz4 = false;
    
       return config;
     },

to my next.config.js to prevent the following error:

Module not found: Can't resolve '../build/Release/xxhash'```

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions