连接Microsoft Access数据库时出现TypeError: query属性未定义错误
解决Node.js连接Access数据库时的TypeError: Cannot read properties of undefined (reading 'query')错误
问题根源
odbc.connect用法错误:用回调模式调用odbc.connect时,方法返回值不是连接对象,有效连接是通过回调的第二个参数传递的。你直接把odbc.connect的返回值赋值给connection,导致这个变量是undefined,调用connection.query自然触发报错。- Windows路径未转义:JavaScript字符串里的
\是转义字符,直接写C:\Users\...会让路径解析出错,驱动找不到数据库文件。
修复步骤
- 调整回调逻辑,从
odbc.connect的回调参数里获取真正的连接对象 - 转义路径中的反斜杠,或者改用正斜杠
- 确认Microsoft Access ODBC驱动已正确安装,且驱动位数(32/64位)和Node.js版本匹配
修正后的代码
const odbc = require('odbc'); // 转义反斜杠,或者改用正斜杠 const databasePath = 'C:\\Users\\2250689\\Downloads\\trailRMTool.accdb'; // 替代写法:'C:/Users/2250689/Downloads/trailRMTool.accdb' odbc.connect(`Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=${databasePath}`, (err, connection) => { if (err) { console.error('Error connecting to the database:', err); return; } const sqlQuery = 'SELECT Name FROM RMData'; connection.query(sqlQuery, (queryError, result) => { if (queryError) { console.error('Error executing query:', queryError); } else { console.log('Query result:', result); } connection.close((closeError) => { if (closeError) { console.error('Error closing the database connection:', closeError); } else { console.log('Database connection closed.'); } }); }); });
额外注意事项
- 如果还是出现node_modules相关错误,删掉
node_modules文件夹和package-lock.json,重新执行npm install重装依赖 - 若驱动找不到,检查Node.js和驱动的位数是否一致(比如Node.js是64位,就要装64位的Access ODBC驱动)
内容的提问来源于stack exchange,提问作者FaThima Hussain
相关产品推荐
相关产品推荐

