Node.js调用oracledb.getConnection报is not a function错误求助
问题原因
你安装的是oracledb v6.0及以上版本,该版本做了ESM适配,默认CommonJS require导入得到的对象不再直接挂载getConnection方法,所以会抛出该报错。
可用解决方案
- 方案1:调整CommonJS导入写法,新增
.default属性取值
把代码中的const oracledb = require('oracledb');修改为const oracledb = require('oracledb').default;即可直接兼容原有调用逻辑。 - 方案2:切换为ES Module导入写法
如果你的项目支持ESM规范,可将导入语句改为import oracledb from 'oracledb';,原有调用逻辑不需要修改。
额外代码问题修正
你当前代码里的connection.execute同时使用了await和回调函数,二者功能重复,保留任意一种即可。同时建议新增连接释放逻辑避免连接泄漏,修正后的完整代码如下:
async tidInfoSubmitForm(){ let connection; // 调整后的导入语句 const oracledb = require('oracledb').default; const config = { user : 'XX', password : 'XX', connectString : "XXX" } try { connection = await oracledb.getConnection(config); // 仅保留await写法,去掉冗余回调 const result = await connection.execute('Select * from table'); console.log(result.rows); } catch (err) { alert(err) console.log('Error :' + err); } finally { // 新增连接释放逻辑 if (connection) { try { await connection.close(); } catch (err) { console.error(err); } } } }
内容的提问来源于stack exchange,提问作者Akhil
相关产品推荐
相关产品推荐

