使用async函数时ESLint报Parsing error: Unexpected token function错误求助
我看到你在使用async函数时遇到了ESLint解析错误,报错信息是Parsing error: Unexpected token function with async,结合你的配置和代码,我们可以从以下几个方面排查解决:
1. 修正ECMAScript版本配置的写法
你的.eslintrc里设置了ecmaVersion: 8(对应ES2017,原生支持async/await),但部分ESLint版本对数字格式的版本号识别可能存在兼容性问题。建议改成字符串格式的版本标识,同时明确指定代码的模块类型,避免解析时出现异常:
修改parserOptions部分如下:
"parserOptions": { "ecmaVersion": "2017", "sourceType": "module" }
sourceType: "module"会告诉ESLint你的代码是ES模块风格,更贴合现代JS项目的写法规范。
2. 检查ESLint与Airbnb配置的版本兼容性
eslint-config-airbnb-base对ESLint的版本有严格要求,如果两者版本不匹配,可能导致语法解析异常:
- 查看
package.json里的ESLint版本,确保至少是v4.0.0以上(该版本开始完整支持ES2017语法解析) - 若版本不兼容,升级ESLint到对应版本,或安装匹配的
eslint-config-airbnb-base:比如ESLint v8.x搭配eslint-config-airbnb-base@15.x,ESLint v5.x搭配eslint-config-airbnb-base@13.x
3. 调整func-style规则(非解析错误,但需注意)
你设置了"func-style":"error",该规则默认要求使用函数声明(function get() {})而非函数表达式。你的代码是命名函数表达式(const get = async function get() {}),这会触发该规则的lint错误,但不会导致解析错误。如果想保留当前写法,可以修改规则允许函数表达式:
"func-style": ["error", "expression"]
验证修改
修改配置后,重新运行ESLint检查你的async函数代码,解析错误应该会消失。如果问题仍然存在,可以尝试删除node_modules和package-lock.json,重新安装所有依赖,确保依赖没有冲突。
内容的提问来源于stack exchange,提问作者shamon shamsudeen

