使用Databricks SQL Driver for Node.js连接时遇args.at is not a function错误求助
问题分析:Databricks SQL Driver for Node.js 执行fetchAll时报错TypeError: args.at is not a function
问题背景
- Node.js版本:v14.21.3(满足官方文档>14的要求)
- @databricks/sql版本:^1.6.1(最新版)
- 认证方式:Databricks个人访问令牌
- 执行代码时,在
queryOperation.fetchAll()环节触发错误:TypeError: args.at is not a function
代码示例
try { const client: DBSQLClient = new DBSQLClient(); console.log("created DBSQLClient"); const connectOptions = { token: '***', host: '***.cloud.databricks.com', path: '/sql/1.0/warehouses/{***}' }; const connection = await client.connect(connectOptions); console.log('Successfully connected to Databricks'); const session: IDBSQLSession = await connection.openSession(); const query = "Select 1"; console.log("session created.."); const queryOperation: IOperation = await session.executeStatement( query, { runAsync: true, maxRows: 10 } ); console.log("creating queryOperation.."); const result = await queryOperation.fetchAll(); console.log("Fetched result.."); await queryOperation.close(); await session.close(); await connection.close(); } catch (error) { console.error("Error message:", error); }
运行日志
created DBSQLClient Successfully connected to Databricks session created.. creating queryOperation.. Error: TypeError: args.at is not a function
成因分析
Array.prototype.at()是ES2022新增的数组方法,Node.js 16.6.0及以上版本才原生支持该API,你的Node.js 14.21.3版本并不包含这个方法。- @databricks/sql 1.6.1版本的内部实现中使用了
at()方法,但未对Node.js 14做兼容处理,因此在调用fetchAll()时触发该类型错误。
解决方案
- 升级Node.js版本:将Node.js升级到16.6.0或更高版本(推荐使用LTS版本如18.x或20.x),满足驱动对API的要求。
- 降级驱动版本:如果无法升级Node.js,可尝试将@databricks/sql降级到1.5.x及更早的版本,这些版本的代码未使用
at()方法,能在Node.js 14环境下正常运行。
内容的提问来源于stack exchange,提问作者Binay Kumar Bose
相关产品推荐
相关产品推荐

