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,提问作者Дмитрий Литвин
相关产品推荐
相关产品推荐

