VSCode 默认支持ES6+语法和智能提示,但需项目被识别为JavaScript项目并正确配置jsconfig.json及安装@types类型库;否则import、Promise.allSettled等API无提示,主因是缺少根目录标识、jsconfig.json缺失或错误、混用require/import、未装@types/node等;必须配置最小jsconfig.json(含ES2020 target、esnext module、*/.js include),安装对应@types包,并重启TS Server。

VSCode 本身完全支持 ES6+ 语法和智能提示,但默认不自动启用——关键在于项目是否被识别为“JavaScript 项目”,以及语言服务能否正确推导类型。没配置 jsconfig.json 或打开方式不对,import、Promise.allSettled、fs.promises 这类 API 就大概率不提示。
为什么旧项目 ES6 提示全失效?常见原因直击
不是 VSCode 不行,是它“不敢猜”:旧项目往往缺根目录标识,语言服务退化为文件级分析,导致跨文件引用中断、模块解析失败、全局 API 推导丢失。
- 只用
File → Open File打开单个.js文件 → VSCode 当作孤立脚本处理,禁用项目级类型推导 -
jsconfig.json缺失或含过时字段(如"files"列表硬编码"app.js")→ 强制限制扫描范围,其他文件直接被忽略 - 混用
require()和import→ Node.js 模块系统冲突,fs.promises等现代 API 的类型定义无法加载 - 未安装对应类型库(如
@types/node)→process.env、__dirname等 Node 全局变量无提示
必须加的 jsconfig.json 配置(最小可行版)
放在项目根目录,不要放错位置。内容只需三段,删掉所有 "files" 字段——它在现代 VSCode 中已废弃且有害。
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
{
"compilerOptions": {
"target": "ES2020",
"module": "esnext",
"lib": ["es2020", "dom"],
"allowJs": true,
"checkJs": false,
"skipLibCheck": true,
"esModuleInterop": true,
"resolveJsonModule": true
},
"include": ["**/*.js"],
"exclude": ["node_modules"]
}-
"target": "ES2020"比"ES6"更稳妥:覆盖?.、??、BigInt等实际常用特性 -
"module": "esnext"是关键:让语言服务按原生 ESM 规则解析import,否则import * as fs from "fs"会报错且无提示 -
"include"必须用通配符:"**/*.js"显式声明作用域,避免因文件夹结构变化导致漏扫
第三方库提示补全:不用 Babel 插件,靠 @types
Babel 插件对智能提示毫无帮助,反而常引发冲突。真正起作用的是 TypeScript 类型定义文件,通过 npm 安装即可注入提示能力。
- Node.js 原生 API:
npm install --save-dev @types/node→process、Buffer、fs.promises全部可提示 - 浏览器环境(如
fetch、AbortController):npm install --save-dev @types/web - 特定库(如
axios、lodash):npm install --save-dev @types/axios @types/lodash - Cesium 等非标准路径库:需手动修正
declare module名称,例如把"cesium"改为"cesium/Cesium"才匹配import * as Cesium from "cesium/Cesium"
HTML 中 <script type="module"> 的提示怎么生效?
仅靠 jsconfig.json 不够。VSCode 默认把 HTML 内联脚本当传统 script 处理,必须显式告诉它这是模块上下文。
- 在
<script type="module">标签内第一行加 JSDoc 注释:/** @type {typeof import('./utils.js')} */→ 可触发导入模块的类型提示 - 更可靠做法:把逻辑全部拆到外部
.js文件,用import加载,再通过type="module"引入——VSCode 对外部模块文件的分析能力远强于内联脚本 - 禁用任何标榜“ES6 提示”的第三方插件(如旧版 Babel 插件),它们会劫持语言服务,反而屏蔽 TS Server 原生能力
最易被忽略的一点:改完 jsconfig.json 或装完 @types 后,必须手动重启 TS Server —— 按 Ctrl+Shift+P(macOS 为 Cmd+Shift+P),输入 Developer: Restart TS Server 并执行。不重启,所有配置都是静默无效的。

















