必须配置 "jsx": "preserve" 和 "jsximportsource": "solid-js" 并重启 ts server,否则 solidjs 在 vscode 中无提示、jsx 不高亮、createsignal 灰色;仅装 solidjs-community.solid-js-vscode 插件有效,禁用其他 solid 相关插件。

SolidJS 在 VSCode 里没提示、JSX 不高亮、createSignal 灰色无类型 —— 根本不是插件装少了,而是 tsconfig.json 配置错或 TS Server 没重启。
必须配对的两个 tsconfig.json 选项
VSCode 默认把 .tsx 当 React 处理,SolidJS 的 JSX 工厂和类型导入必须显式声明,否则语言服务直接“失明”。
-
"jsx": "preserve":强制 TypeScript 不处理 JSX,交给 Solid 编译器(如vite-plugin-solid)转译;设成"react"或"react-jsx"会触发 React 类型检查,导致onMount报红、“React is not defined”等错误 -
"jsxImportSource": "solid-js":值必须严格是字符串"solid-js",不能是"solid-js/web"或带路径的写法,否则createMemo、createStore等函数无法关联类型定义
这两个字段缺一不可,顺序无关,但必须同时存在。如果项目用的是 jsconfig.json,同样要加这两项(注意 JS 项目不支持 types 字段,但 jsx 和 jsxImportSource 仍生效)。
只认 solidjs-community.solid-js-vscode 这一个插件
别搜 “SolidJS” 就随便点安装 —— solidjs.solidjs 插件已废弃,不支持 TSX 和 Solid v2+,装了反而干扰类型推导。
- 正确插件 ID:
solidjs-community.solid-js-vscode(作者是 solidjs-community) - 配套建议装:
esbenp.prettier-vscode(格式化),但不要装prettier-plugin-solid—— 它已合并进主插件,重复装可能冲突 - 卸载所有其他 Solid 相关插件,包括 Volar 的 Solid 分支(Volar 是 Vue 专用 LSP,强行启用会导致 JSX 解析错乱)
插件启用后,VSCode 会基于文件内容(比如检测到 createSignal() 调用或 <show></show> 标签)自动激活 Solid 语言功能,不依赖文件后缀 —— 所以 Index.svelte 也能高亮,纯属巧合,别当真。
TS Server 不重启 = 白配
改完 tsconfig.json 或装完插件后,VSCode 不会自动重载 TypeScript 语言服务。悬停没提示、灰色函数、类型报错持续存在,90% 是因为这一步漏了。
- 快捷键:
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)→ 输入Restart TS server→ 回车 - 验证是否生效:打开任意
.tsx文件,把光标停在createEffect上,看是否有完整签名提示;再输入<div>,确认标签有颜色而非纯白 <li>如果仍无效,检查项目根目录是否存在 <code>tsconfig.json或jsconfig.json—— 没这个文件,插件连配置入口都找不到 -
createMemo灰色、无跳转:检查"jsxImportSource": "solid-js"是否拼错,或node_modules/solid-js是否真实存在(npm install solid-js漏了) - JSX 标签无颜色、属性无提示:确认
"jsx": "preserve"已设,且文件被识别为 TypeScript/JSX 模式(右下角状态栏应显示 “TypeScript React” 或 “JavaScript React”,不是 “Plain Text”) - 鼠标悬停显示
any类型:tsconfig.json中缺少"include": ["src/**/*"],或src外还有 Solid 文件但没包含进编译范围 -
onMount标红说 “未定义”:不是没导入,是 TS Server 没加载 Solid 类型 —— 重启它,再检查vite.config.ts是否启用了solidPlugin()
注意:Vite 项目还需确认 vite.config.ts 中已调用 solidPlugin(),否则 TS Server 加载时无法注入 Solid 类型定义,即使配置全对也提示失效。
常见症状与直击解法
遇到具体问题,先对照现象查根源,别盲目重装:
最易被忽略的一点:SolidJS 的类型定义深度依赖 Vite 插件注入,纯 TS 编译(如 tsc --noEmit)跑不通,必须靠 vite-plugin-solid 搭建的上下文才能激活完整智能提示 —— 所以没有 Vite,或者 vite.config.ts 里忘了 solidPlugin(),VSCode 就是“睁眼瞎”。











