需安装官方Qwik插件(QwikLabs发布)、重启VSCode、配置tsconfig.json的types和jsx选项、升级Prettier至3.0.0+并设parser为typescript、确保项目根目录为工作区且启用inotify。

Qwik 项目在 VSCode 里没语法高亮和补全?先确认是否装对了插件
VSCode 默认不识别 qwik 文件(比如 .tsx 里用的 $、useClientEffect$ 这类宏),核心原因是缺少语言服务器支持。官方推荐的插件是 Qwik(作者:QwikLabs),不是 Qwik VS Code Extension 或其他同名但非官方的旧版。
- 插件市场搜 “Qwik”,认准发布者是
QwikLabs,图标是紫色 Q 字 - 安装后必须重启 VSCode(仅重载窗口不够,插件的 Language Server 需完整启动)
- 如果项目根目录有
qwik.config.ts,插件会自动激活;没有的话,手动打开一个.tsx文件,看右下角状态栏是否显示 “Qwik” 而非 “TypeScript React”
TSX 文件里 useSignal$ 报错“Cannot find name”?检查 tsconfig.json 配置
这不是插件问题,而是 TypeScript 编译器没加载 Qwik 的类型声明。即使插件装了,tsc 或 IDE 内置 TS 服务仍可能报错。
- 确保项目已安装
@builder.io/qwik(v2+),且node_modules/@builder.io/qwik/tsconfig.json存在 - 在项目根目录的
tsconfig.json中,compilerOptions.types必须包含"@builder.io/qwik" - 不要删掉
compilerOptions.jsx,Qwik 要求设为"preserve"(不是"react"或"react-jsx") - 如果用了
extends,比如继承自./tsconfig.base.json,要确认被继承文件里没覆盖掉types或jsx
保存时格式化失效或 Prettier 忽略 $ 宏?别让 Prettier 和 Qwik 的 AST 解析冲突
Qwik 的宏(如 useServer$)本质是带特殊注释的函数调用,但老版本 Prettier 会把 $ 当普通标识符处理,导致格式化后破坏语义。
- 升级到
prettier@3.0.0+(Qwik v2.6+ 要求) - 在
.prettierrc中显式加"parser": "typescript"(别用babel或flow) - VSCode 设置里关掉
editor.formatOnSave对typescriptreact的默认绑定,改用工作区设置:"editor.defaultFormatter": "esbenp.prettier-vscode", "[typescriptreact]": { "editor.formatOnSave": true } - 如果仍乱序,临时在宏前加
// prettier-ignore,但只用于调试,不是长期方案
热更新(HMR)不触发或组件不刷新?VSCode 的文件监听可能被杀掉
Qwik 开发服务器依赖文件系统事件通知,而 VSCode 的某些扩展(尤其是 WSL 用户装的 Remote - WSL + Docker 插件)会干扰 inotify。
- 检查终端里运行
npm run dev时,控制台是否打印[vite] hot updated:日志 —— 没这行说明 HMR 根本没连上 - WSL 用户需在
/etc/wsl.conf加:[automount] inotify=true
然后wsl --shutdown重启 - macOS 用户如果用 Dropbox 或 iCloud 同步项目目录,关掉同步,Qwik 的 watch 不兼容这些虚拟文件系统
- 不要用 VSCode 的“添加到工作区”功能把子目录单独打开,Qwik 要求整个项目根目录为工作区,否则
qwik.config.ts无法被识别
Qwik 的宏语法和类型系统耦合极深,插件只是“显形层”,真正卡住的地方往往在 tsconfig.json 类型路径、Prettier 解析器选择、或者文件系统事件权限这种底层细节。改完配置记得关掉所有 VSCode 窗口再重开,Language Server 不会热重载配置。











