必须安装svelte for vs code插件、配置svelte.config.js(哪怕为空)、重启语言服务器,三者缺一不可;否则.svelte文件被识别为html,导致语法标红、$:响应式声明无提示、跳转失效。

装对插件、配好 svelte.config.js、重启语言服务器,三者缺一不可;否则 .svelte 文件会被当成 HTML 处理,语法标红、$: 无提示、跳转失效全都会出现。
为什么装了 Svelte for VS Code 还是标红?
VSCode 不会自动把 .svelte 当作 Svelte 文件处理——它只看项目根目录有没有 svelte.config.js。没有这个文件,插件直接降级为 HTML 模式,所有 Svelte 特性(比如 export let name: string 的类型推导、$: doubled = count * 2 的响应式依赖识别)全部失效。
- 右下角状态栏显示
HTML是最明确的信号;点击它 → 选Svelte→ 勾选Always use Svelte for '.svelte' files - 手动建项目时,必须在根目录创建空文件:
touch svelte.config.js;用npm create svelte@latest初始化则自带 - 改完后不能只按
Ctrl+Shift+P→Developer: Reload Window,必须执行Ctrl+Shift+P→Svelte: Restart Language Server - 装了其他 Svelte 相关扩展(如
Svelte Language Server、Svelte Intellisense)会冲突,全卸载
TS 类型提示失效:Cannot find name '$' 或 $$Props 报错
这不是插件问题,是 TypeScript 根本没加载 Svelte 类型定义。VSCode 的 TS 服务和 Svelte 插件都依赖 tsconfig.json 中的配置来识别全局类型和路径别名。
-
compilerOptions.types必须包含"svelte",否则$derived、$state、$$Props全部不可见 - 要让
$lib/Component.svelte路径可解析,compilerOptions.paths得显式声明:"$lib/*": ["src/lib/*"],且baseUrl设为"." -
include字段必须覆盖.svelte文件,写成["src/**/*"]最稳妥;只写["src/**/*.ts"]会导致<script lang="ts"></script>块不被扫描 - 改完
tsconfig.json后,必须执行Ctrl+Shift+P→Restart TS Server,否则缓存仍生效
Prettier 格式化 .svelte 文件失败或破坏结构
原生 Prettier 不认识 <script></script> 和 <style></style> 块,直接格式化会删空格、错乱缩进,甚至吃掉 $$props 这类特殊变量。
- 必须安装
prettier-plugin-svelte:npm install --save-dev prettier prettier-plugin-svelte -
.prettierrc内容至少得有:{"plugins": ["prettier-plugin-svelte"]} - VSCode 设置中禁用全局格式化关联,改用项目级配置:
"[svelte]": {"editor.formatOnSave": true} - 确保
editor.defaultFormatter明确设为"esbenp.prettier-vscode",并关掉 ESLint 自动修复等干扰项
调试断点进不了 <script></script> 块
断点停在空白行、或根本不停,不是代码问题,是 sourcemap 路径没对齐。Vite 默认输出的 source map 路径和 VSCode 调试器默认查找规则不匹配。
-
launch.json中必须加sourceMapPathOverrides,Vite 项目固定用:"webpack:///src/*": "${webRoot}/src/*" - 开发服务器必须先运行(
npm run dev),再按F5启动调试;否则 Chrome 无法连接到localhost:5173 - 检查浏览器地址栏是不是
http://localhost:5173—— 如果是file://协议,断点一定无效 - SvelteKit 项目要确认
svelte.config.js中用的是vitePreprocess(),不是已废弃的sveltePreprocess()
最容易被忽略的是 svelte.config.js 的存在性与内容有效性——它不只是给构建工具看的,Svelte 插件、TS 服务、Prettier 插件、调试器全都靠它判断项目上下文。空文件能过基础校验,但一旦启用 TypeScript 或路径别名,就必须补全对应字段,且每次修改都要重启语言服务。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











