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

VS Code 2018中含async/await的MSSQL Node.js代码语法错误求助

问题排查与修正方案

我来帮你梳理下这个问题的解决思路,主要分为VS Code语法支持配置调整和代码逻辑完善两部分:

一、解决VS Code的语法报错问题

你遇到的语法错误核心原因是VS Code 2018默认的JavaScript目标版本未启用ES2017支持——async/await是ES2017引入的特性,默认配置下编辑器会识别为语法错误。你可以按以下步骤修改:

  • 打开VS Code设置(快捷键Ctrl+,或Cmd+,)
  • 在搜索框输入javascript implicit project config target
  • 将目标版本从默认的ES3/ES5改为ES2017或ESNext
  • 保存设置后重新打开文件,语法错误标记就会消失

二、完善代码逻辑与健壮性

你的代码还有几处需要优化的地方,确保功能正常运行:

1. 补充Promise的错误捕获

getCurrentId里的Promise只处理了成功场景,没有捕获数据库查询的错误,会导致错误被静默吞掉,需要补充reject逻辑:

function getCurrentId () { 
  var query = "INSERT INTO photos (path) VALUES (''); SELECT SCOPE_IDENTITY() AS id "; 
  var request = new mssql.Request(connection); 
  return new Promise(function(resolve, reject) { 
    request.query(query, function(err, data) { 
      if (err) {
        // 出错时抛出错误,方便后续捕获处理
        return reject(err);
      }
      resolve(data.recordset) 
    }); 
  }) 
}

2. 调用async函数并处理结果

你定义了main这个async箭头函数,但没有执行它。async函数调用后返回Promise,需要补充调用逻辑并捕获可能的错误:

var main = async () =>{ 
  try {
    var quote = await getCurrentId(); 
    console.log("获取到的ID:", quote);
    return quote; 
  } catch (err) {
    console.error("执行出错:", err);
    // 可根据业务需求选择抛出错误或返回默认值
    throw err;
  }
};

// 执行main函数
main();

3. 确保数据库连接已初始化

注意connection变量必须是已成功建立的mssql连接实例,否则new mssql.Request(connection)会报错。请确保在调用getCurrentId前,已经通过mssql.connect()完成了连接建立。

内容的提问来源于stack exchange,提问作者Дмитрий Литвин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:47:15