真正能写js只需装4个刚需插件:eslint(实时标红语法错误)、prettier(保存自动格式化)、javascript and typescript nightly(增强语法提示)、live server(本地热更新服务);再配jsconfig.json实现智能跳转与路径别名支持。

VSCode 写 JS 不需要装一堆插件也能跑起来,但想少踩坑、少查文档、写得快,这几个插件是绕不开的「刚需」——不是锦上添花,是缺了就卡住。
装哪些插件才算真正能写 JS?
只装这 4 个,覆盖编码、提示、检查、格式化全流程:
-
ESLint:实时标红语法错误和潜在问题(比如console.log拼错成consol.log);不配规则文件也能用,但建议初始化一个基础配置(npx eslint --init) -
Prettier:保存时自动调整缩进、括号换行、引号风格;和ESLint冲突时,加eslint-config-prettier关掉 ESLint 的格式类规则 -
JavaScript and TypeScript Nightly:VSCode 自带 JS 语言服务的增强版,修复大量类型推断失效问题(比如解构后变量没提示、Array.prototype.map返回值类型不准) -
Live Server:右键 HTML 文件点「Open with Live Server」,自动起本地服务并热更新;避免直接双击打开file://协议导致的跨域或模块加载失败
别装「JavaScript Snippet Pack」这类代码片段合集——VSCode 自带的 JS 片段已覆盖 for、log、class 等高频结构,第三方包容易重叠、触发混乱补全。
为什么 jsconfig.json 比插件还关键?
没有它,VSCode 对大型 JS 项目(尤其含 import 路径别名或多目录)的跳转、重命名、智能提示会大面积失灵——插件再强也救不回来。
在项目根目录新建 jsconfig.json,最简配置如下:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"allowSyntheticDefaultImports": true,
"baseUrl": ".",
"paths": {
"@utils/*": ["src/utils/*"],
"@api/*": ["src/api/*"]
}
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}
重点看 baseUrl 和 paths:它们告诉 VSCode “@utils/xxx” 实际指向哪,否则你点 import { foo } from '@utils/bar' 会跳转失败,且 foo 没提示。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
调试 JS 时 launch.json 怎么配才不翻车?
两种场景,配法完全不同,混用必报错:
- 调试浏览器端 JS(如操作 DOM):用
type: "chrome"或"edge",url填本地 HTML 地址("http://localhost:5500/index.html"),别填file://路径 - 调试 Node.js 脚本(如 CLI 工具、纯逻辑):用
type: "node",program必须是相对路径("${file}"表示当前打开的 JS 文件),不能写绝对路径或node xxx.js命令
常见报错 Cannot connect to the target: connect ECONNREFUSED 127.0.0.1:9229,大概率是 Chrome 没开远程调试端口——启动 Chrome 时加参数:chrome.exe --remote-debugging-port=9229。
自定义代码片段别碰 javascript.json 全局文件
全局片段(javascript.json)一旦写错,所有 JS 文件都会受影响,且难以定位问题。正确做法是项目级局部片段:
- 在项目根目录建
.vscode/snippets/javascript.json - 内容格式和全局一样,但只对当前文件夹生效
- 例如快速生成 fetch 封装:
{
"fetch wrapper": {
"prefix": "ffetch",
"body": [
"const $1 = await fetch('$2');",
"if (!$1.ok) throw new Error(`HTTP error! status: $1.status`);",
"const $3 = await $1.json();",
"$0"
],
"description": "Fetch with error check"
}
}
这样既避免污染其他项目,又方便 Git 提交共享——团队新人拉代码就能用上统一片段。
最后提醒一句:jsconfig.json 和 .vscode/snippets/ 这两个东西,不写进项目,等于把 VSCode 当记事本用。










