Sublime Text 需通过 LSP 插件正确启用 svelte-language-server 才能获得 Svelte 语义功能;关键条件是:安装 LSP 和 LSP-svelte、项目根目录存在 svelte.config.js、手动启用 svelte 语言服务器、配置 tsconfig.json 的 types 和 paths、开启 Svelte 插件的 TypeScript 嵌入支持。

Sublime Text 本身不提供 Svelte 语义能力,svelte-language-server 是唯一能带来跳转、补全、hover 类型、$lib 路径解析和响应式符号(如 $derived)识别的路径——但必须通过 LSP 插件正确接入,否则它只是个没被调用的 Node.js 进程。
为什么装了 LSP 和 svelte-language-server 还没跳转?
根本原因不是服务没装,而是 Sublime 没启动它。LSP 插件默认只对已知语言 ID 启动服务器,而 Svelte 不在默认列表里。
- 确认已通过 Package Control 安装
LSP(作者 sublimelsp)和LSP-svelte(注意:不是svelte-language-server独立包,那是冲突源) - 项目根目录必须存在
svelte.config.js,哪怕内容只有module.exports = {};;缺这个文件,svelte-language-server直接退出 - 打开一个
.svelte文件后,按Cmd+Shift+P(macOS)或Ctrl+Shift+P(Windows/Linux),输入LSP: Enable Language Server Globally,选中svelte - 再执行
LSP: Restart Servers—— 注意:仅重启窗口无效,必须重启整个 LSP 会话
$lib 路径不跳转、on:click 无提示?检查 tsconfig.json
LSP 服务启动了,不代表语义就完整。Svelte 的类型推导严重依赖 tsconfig.json 配置,尤其对 $lib、$$Props、$derived 等全局符号。
使用 Scrapfly SDK(scrapfly-sdk)在 TypeScript 或 JavaScript 中进行网页抓取,用于用户请求抓取 URL、绕过反爬虫防护、渲染页面等场景。
-
compilerOptions.types必须包含"svelte",否则$derived会被标为未定义 -
compilerOptions.baseUrl应设为".",且paths中声明:"$lib/*": ["src/lib/*"] - 如果用了
lang="ts",确保type字段在<script setup lang="ts"></script>中显式写明,比如export let name: string;;否则 LSP 可能跳过类型检查 - 改完
tsconfig.json后,必须再次执行LSP: Restart Servers,LSP 不会自动监听配置变更
<script setup lang="ts"></script> 块仍是灰色?嵌入链断了
灰色 = Sublime 没把这块交给 TypeScript 解析器,和 LSP 无关。这是语法层嵌入失败,常见于插件未启用或嵌入开关关闭。
- 先打开一个
.ts文件,确认右下角显示TypeScript;若显示JavaScript或别的,说明TypeScriptSyntax插件未生效 - 进
Preferences → Package Settings → Svelte for Sublime → Settings,确保用户设置中有:"enable_typescript": true - 临时验证法:把当前
.svelte文件重命名为.ts,看<script setup></script>是否立刻高亮;能则证明是 Svelte 层嵌入规则失效,不是 TS 插件问题 - 不要手动编辑
Packages/Svelte for Sublime/Svelte.sublime-syntax—— 一行格式错,整份语法定义崩掉,文件退化为白底黑字
最容易被忽略的是“嵌入语言启用状态”和“svelte.config.js 存在性”这两点。它们不报错、不弹窗,但会让 LSP 服务静默拒绝启动,所有语义功能归零。调试时优先验证这两个条件,比反复重装插件更有效。

















