为什么Node.js运行代码时提示Unexpected token async错误?
问题原因与解决方案
- 第一个
Unexpected token async报错:是异步函数语法书写错误导致。JavaScript规定async关键字需要放在函数定义的最前面,普通异步函数的正确声明规则为async function 函数名(),对象类的异步方法规则为async 方法名(),你书写的func() async不符合语法规范,直接触发解析错误。Node.js v10.24.1已经原生支持async/await语法,该报错和版本无关。 - 第二个
Unexpected token {报错:是删除async后函数声明规则缺失导致。普通函数声明必须添加function前缀,正确写法为function func() {,你直接写func() {会被JS引擎识别为调用func函数,后续的{不属于合法的调用语法,因此抛出错误。 - 隐藏问题:你写的
getName函数内部创建了Promise实例,但没有将实例return出去,就算语法修正后,await getName()也只能拿到undefined,无法获取数据库查询结果。
修正后可正常运行的代码
function getName(){ // 新增return返回Promise实例 return new Promise((resolve, reject) => { conn.query("SELECT name FROM members WHERE id=1", (err, res, fields) => { if (err) reject(err); resolve(res); }); }); } // 调整async位置,补全function关键字 async function func() { try{ const data = await getName(); console.log(data); } catch(e) { console.log(e); } }
内容的提问来源于stack exchange,提问作者Cain Nuke
相关产品推荐
相关产品推荐

