WebStorm 找不到 TypeScript 编译器是因为默认不识别全局安装的 typescript,需本地安装 npm install typescript --save-dev,并在设置中手动指定 node_modules/typescript/lib/tsc.js 路径。

WebStorm 找不到 TypeScript 编译器:Cannot find TypeScript compiler
这不是 WebStorm 坏了,而是它压根没看见你装的 typescript 包——哪怕你在终端敲 tsc -v 能正常返回版本号。
- WebStorm 默认不读全局安装的
typescript(即npm install -g typescript),只认项目本地的node_modules/typescript - 必须执行
npm install typescript --save-dev,确保node_modules/typescript真实存在且可读 - 进
Settings/Preferences → Languages & Frameworks → TypeScript,在TypeScript version下拉菜单里手动选中Project preferences → node_modules/typescript/lib/tsc.js - 如果下拉列表为空,先点右侧刷新按钮;还不行,就去终端进项目根目录,运行
ls node_modules/typescript/lib/tsc.js确认路径是否存在、权限是否被拒绝
保存 TS 文件后没生成 JS:File Watcher 配置失效
常见现象是改完 demo.ts 一保存,demo.js 就没影儿,或者控制台报错 Cannot write file because it would overwrite input file——这基本等于 File Watcher 和 tsconfig.json 在打架。
- 打开
Settings → Tools → File Watchers,点 + → 选tsconfig.json(不是 “TypeScript”) -
Working directory必须设为项目根目录(也就是有tsconfig.json的地方),否则tsc根本找不到配置 -
Arguments推荐填:--project $ProjectFileDir$/tsconfig.json --noEmit false --skipLibCheck true,避免因缺少skipLibCheck导致编译中断 - 检查
tsconfig.json是否有"outDir": "./dist";没有就加上,且确保该目录不在src/或src/ts下,否则 Watcher 可能循环触发 -
Output paths to refresh必须填:$ProjectFileDir$/dist/$FileNameWithoutExtension$.js,留空 = WebStorm 不知道该刷新哪几个文件
Vue 3 + TypeScript 项目里 TS 提示不准、跳转失败
典型表现是 ref、defineComponent 报红,或按住 Ctrl 点击进不去定义——问题往往不在 Vue 插件本身,而在类型系统没对齐。
- 确认已安装官方
Vue.js插件(Settings → Plugins搜索并启用),重启 IDE -
tsconfig.json中的"compilerOptions"至少要包含:"jsx": "preserve"、"moduleResolution": "node"、"types": ["node", "vue"] - 如果用的是
<script setup lang="ts"></script>,确保"vue" in node_modules/@types/;没就手动装:npm install @types/vue --save-dev - 别忽略
node_modules库识别:进Settings → Languages & Frameworks → JavaScript → Libraries,确认node_modules已被自动识别为库(带“N”图标);若未识别,点Download手动添加@types/node和@types/vue
tsc --watch 和 WebStorm File Watcher 能不能共存?
能,但不建议同时开。两者都会监听文件变化并调用 tsc,容易造成重复编译、输出冲突、甚至 CPU 占满。
- WebStorm 的 File Watcher 是 IDE 内建机制,更适合轻量开发、快速反馈;
tsc --watch更适合 CI 或需要完整构建流程的场景 - 如果已在终端运行
tsc --watch,建议关掉 WebStorm 的 File Watcher(取消勾选),否则可能看到两个demo.js同时被写入、最后只剩一个 - 想保留 IDE 内提示又不想编译,可以把
tsconfig.json中的"noEmit": true,这样 WebStorm 仍能做类型检查,但不会生成 JS
最常被忽略的一点:WebStorm 对 tsconfig.json 的变更不是实时响应的。改完配置后,得手动触发一次保存(哪怕空格增删再删掉),或重启 TypeScript 服务(Ctrl+Shift+A → Restart TypeScript Service),不然旧规则还在跑。

















