如何用node-mssql连接SQL Server?遇ConnectionPool构造函数错误
解决TypeError: sql.ConnectionPool is not a constructor
错误原因
mssql从v7版本开始调整了模块导出结构,使用import * as sql from 'mssql'时,ConnectionPool并非直接挂载在sql命名空间下,而是属于默认导出的对象,因此会出现“不是构造函数”的错误。如果是v6及以下版本,原写法是有效的,此时需检查版本是否匹配或依赖是否安装正常。
解决方案
方案1:改用默认导入
修改导入语句为默认导入,即可正常访问ConnectionPool:
import sql from 'mssql' // 你的代码片段... console.log('sqlConfig ->', sqlConfig) let pool: sql.ConnectionPool | null = null try { pool = await new sql.ConnectionPool(sqlConfig).connect() const result = await pool.query` SELECT id, givenname, familyname, employeeId, insert_date FROM emp WHERE employeeId = ${employeeId}` pool.close() console.log('### result.recordset ###-> ', result.recordset) return result.recordset } catch (err) { console.error('数据库连接出错:', err) throw err }
方案2:单独导入ConnectionPool
直接从mssql中导入ConnectionPool类型,代码中直接使用:
import { ConnectionPool } from 'mssql' // 你的代码片段... console.log('sqlConfig ->', sqlConfig) let pool: ConnectionPool | null = null try { pool = await new ConnectionPool(sqlConfig).connect() const result = await pool.query` SELECT id, givenname, familyname, employeeId, insert_date FROM emp WHERE employeeId = ${employeeId}` pool.close() console.log('### result.recordset ###-> ', result.recordset) return result.recordset } catch (err) { console.error('数据库连接出错:', err) throw err }
额外检查项
- 若需使用旧版本(v6及以下),可以锁定版本安装:
npm install mssql@6,并保持原导入写法。 - 确保已安装正确的类型定义(若需要):
npm install @types/mssql --save-dev - 若依赖缓存有问题,可删除
node_modules和package-lock.json后重新执行npm install
内容的提问来源于stack exchange,提问作者stewchicken
相关产品推荐
相关产品推荐

