You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js连接SQL Server报错:TypeError: pool.query is not a function

解决TypeError: pool.query is not a function问题

错误原因

你当前的dbconfig文件只是导出了一个配置对象,并非真正的SQL Server连接池实例,自然不存在query方法。

解决方案

1. 安装必要依赖

确保已安装mssql包(Node.js连接SQL Server的主流库),执行命令:

npm install mssql
# 或 yarn add mssql

2. 修改dbconfig文件,创建连接池实例

将原dbconfig内容替换为以下代码,生成并导出可用的连接池:

const sql = require('mssql');

const poolConfig = {
  user: process.env.USER,
  password: process.env.PASS,
  server: process.env.SERVER,
  database: process.env.DB,
  options: {
    encrypt: false,
    trustServerCertificate: true,
    instancename: 'MSSQLSERVER'
  },
  port: 1433
};

// 创建连接池实例
const pool = new sql.ConnectionPool(poolConfig);
// 预连接并捕获初始化错误
const poolConnect = pool.connect().catch(err => console.error('连接池初始化失败:', err));

module.exports = {
  sql,
  pool,
  poolConnect
};

3. 调整控制器代码

修改控制器逻辑,确保使用正确的连接池实例,并优先等待连接池完成初始化:

const { pool, poolConnect } = require("../../config");

module.exports = {
  create: async (data, callback) => {
    try {
      // 等待连接池完成连接
      await poolConnect;
      // 执行插入操作,使用命名参数避免顺序错误
      const result = await pool.query(
        `INSERT INTO testRegistration (userName, password, email) VALUES (@userName, @password, @email)`,
        {
          userName: data.userName,
          password: data.password,
          email: data.email
        }
      );
      callback(null, result);
    } catch (error) {
      callback(error);
    }
  }
};

额外检查项

  • 确认环境变量(process.env.USER、process.env.PASS等)已正确加载,可通过console.log(process.env.USER)验证。
  • 如果使用dotenv管理环境变量,需在项目入口文件(如app.js)中执行require('dotenv').config()。

内容的提问来源于stack exchange,提问作者Muhammad Osama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:05:27