You need to enable JavaScript to run this app. Node.js中async函数嵌套调用方法及mssql自签名证书连接报错解决
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中async函数嵌套调用方法及mssql自签名证书连接报错解决

问题修正方案

你现有代码存在两处问题,修正后即可正常调用:

1. 修正getConn错误处理逻辑

当前getConn的catch块直接返回错误对象,而非抛出错误,会导致上层createThumbnails的try-catch无法捕获连接异常,且拿到的conn可能是错误实例而非可用连接,需将getConn内的return err改为throw err。

2. 新增自签名证书信任配置

报错提示为SQL Server连接的SSL证书校验失败,是因为数据库使用了自签名证书,需要在连接配置中新增参数跳过证书校验。


修正后完整代码

const sharp = require('sharp');
const sql = require('mssql')

// CONNECTION CONFIGURATION OF BASE DB
async function getConn() {
    try {
        const config = {
            user: 'sa_user',
            password: '*******',
            server: 'DEDC',
            database: 'DEMO_BASE',
            // 新增证书相关配置
            options: {
                encrypt: true,
                trustServerCertificate: true
            }
        }
        const pool = await new sql.ConnectionPool(config)
        const req=await pool.connect()
        const conn = await req.request()
        return conn;
    } catch (err) {
        // 抛出错误让上层catch捕获
        throw err;
    }
};


const createThumbnails = async() => {
    try{
        var conn = await getConn();
        const query = `exec DBBASE.get_client_info`
        var clientusers = await conn.query(query);
        // 这里可以添加你的业务逻辑处理查询结果
        return clientusers
    } catch (err) {
        // 可在此处添加错误日志打印逻辑
        throw err;
    }
}

// 调用测试 也可以用catch捕获全局错误
createThumbnails().then(res => console.log('查询成功', res)).catch(err => console.error('执行失败', err))

内容的提问来源于stack exchange,提问作者Sai sri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 01:24:05