VSCode无法识别async函数及axios智能提示异常的解决咨询
嘿,这两个问题我之前都踩过坑,给你分享下亲测有效的解决办法:
问题1:VSCode标记async函数为语法错误,但代码运行正常
这个情况基本是VSCode的JavaScript语法检查规则没适配ES2017+的特性——毕竟async/await是ES2017才正式纳入标准的。你可以按以下步骤修复:
在项目根目录创建或编辑
jsconfig.json(TypeScript项目用tsconfig.json),添加配置指定ES版本:{ "compilerOptions": { "target": "ES2017", "module": "ESNext" }, "exclude": ["node_modules"] }保存后,VSCode会自动更新语法检查逻辑,async函数下的波浪线应该就消失了。
如果你的项目用了ESLint,还要同步更新ESLint的配置文件(比如
.eslintrc.js):module.exports = { // 其他配置... parserOptions: { ecmaVersion: 2017, // 也可以直接设为"latest" sourceType: "module" } };之后按
Ctrl+Shift+P唤起命令面板,输入ESLint: Restart ESLint Server重启ESLint服务,语法报错就会消失。
问题2:axios.post无智能提示,但axios.default.post正常
这个问题大多和axios的类型定义或VSCode的类型缓存有关,试试这些操作:
首先确认安装了axios的类型声明包(很多人会漏装这个):
npm install @types/axios --save-dev # 用yarn的话:yarn add @types/axios -D类型包是VSCode识别axios API提示的关键。
检查你的axios导入方式,确保是默认导入:
import axios from 'axios';如果用的是
const axios = require('axios')也没问题,但默认导入更利于类型解析。之后按Ctrl+Shift+P输入TypeScript: Restart TS Server,重启TypeScript语言服务刷新类型缓存。如果还是没效果,就在
jsconfig.json或tsconfig.json里强制指定加载axios的类型:{ "compilerOptions": { // 其他配置... "types": ["axios"] } }这样VSCode就会优先加载axios的类型定义,axios.post的智能提示应该就正常了。
内容的提问来源于stack exchange,提问作者jhon.smith

