vs code 默认支持 es6 提示,但需配置 jsconfig.json(设 "target": "es6"、"module": "esnext")或 tsconfig.json 激活;禁用 babel 插件,开启自动导入,重启 ts server 生效。

VS Code 默认就支持 ES6 代码提示,但需要项目级配置激活
VS Code 内置的 JavaScript 语言服务(基于 TypeScript Server)原生支持 ES6+ 语法和智能提示,不需要额外安装 Babel 插件来“启用提示”。真正影响提示效果的,是项目是否声明了目标环境和模块系统——否则编辑器会按最保守的 ES5/CommonJS 推断类型,导致 import、const、async 等特性不被识别或提示缺失。
- 必须在项目根目录下创建
jsconfig.json(纯前端项目)或tsconfig.json(含 TS 或需更强类型推导) -
jsconfig.json最小有效配置只需声明"target": "ES6"和"module": "esnext"(不是"commonjs",后者会抑制export/import提示) - 如果项目用了
type="module"的 HTML 脚本或 Node.js 的"type": "module","module": "esnext"是唯一能正确解析导入路径并触发跨文件提示的选项 - 删掉过时的
"files"字段(如示例里的"app.js"和"typings/node/dode.d.ts")——它会强制只检查指定文件,反而屏蔽其他文件的提示
为什么装了 Babel 插件反而没用,甚至更乱?
Babel 插件(如 Babel JavaScript)只负责语法高亮和转译,**不参与 VS Code 的 IntelliSense 提示逻辑**。它甚至可能干扰默认语言服务:比如把 import 当作非法语法标红(因未配 jsconfig.json),或让 node_modules 中的 ES6 模块无法被自动索引。
- 禁用所有 Babel 相关语法高亮插件,除非你明确需要实时转译预览
- 确认
JavaScript › Suggest: Auto Imports在设置中为开启状态(默认已开) - 如果仍无提示,按
Ctrl+Shift+P输入Developer: Toggle Developer Tools,看 Console 是否报Could not find a valid tsconfig.json or jsconfig.json—— 这是根本原因
Node.js 环境下 ES6 提示失效的典型场景
当你在 .js 文件里写 import fs from 'fs' 却没提示、参数类型丢失,大概率是因为 VS Code 把当前文件当作了浏览器环境处理,而没加载 Node.js 内置类型定义。
- 确保
jsconfig.json中包含"lib": ["ES2020", "DOM"](加"DOM"不影响 Node,但能兼容更多全局对象) - 添加
"types": ["node"](前提是已全局或本地安装@types/node:npm install -D @types/node) - 避免使用
require()混合import—— 模块系统不一致会导致类型推导中断,fs.promises.readFile这类 API 就可能不提示
HTML 中 <script type="module"></script> 的提示怎么补全?
VS Code 对内联模块脚本的支持依赖于外部 JS 文件是否被纳入语言服务范围。单独一个 HTML 文件里的 type="module",默认不会触发跨文件导入提示。
- 把逻辑拆到独立的
.js文件中,用import引入,并确保该文件在jsconfig.json的扫描范围内(默认包含全部.js) - HTML 文件本身无需特殊配置,但需保证其
<script></script>标签的src指向的是已纳入jsconfig.json的模块路径 - 不要依赖 JSDoc 注释强行“模拟”模块(如
/** @type {typeof import('./utils.js')} */)—— 这属于绕过机制,不稳定且不提示深层属性
最容易被忽略的一点:改完 jsconfig.json 后,VS Code 不会自动重载语言服务。必须关闭并重新打开文件夹,或者按 Ctrl+Shift+P 运行 JavaScript: Restart TS Server,否则所有配置都只是摆设。










