VSCode报“Module not found”但终端正常,根本原因是TypeScript语言服务未正确识别node_modules路径,常见于非项目根目录打开、pnpm/yarn workspaces、tsconfig.json配置失效或TS Server状态异常,需验证Go to Type Definition跳转、Node版本一致性、重装依赖并重启TS Server。

VSCode 报 Module not found 但终端能正常运行,不是依赖没装,而是 TypeScript 语言服务压根没读到你的 node_modules。
为什么终端正常但 VSCode 里 import 爆红
根本原因在于 TS Server 加载路径和你打开 VSCode 的位置不一致。它不会自动向上查找 node_modules,也不会识别 pnpm/yarn workspaces 的软链接结构。典型表现是右键 Go to Type Definition 跳转失败,或左下角显示的 Node 版本和终端 node -v 不一致。
- 打开路径不是项目根目录(比如直接双击打开了
src/index.ts)→ TS Server 默认加载父级甚至全局node_modules - 用了
pnpm workspace或yarn workspaces→ TS Server 可能只看到根node_modules,看不到子包里的类型定义 -
tsconfig.json是空文件、重命名成tsconfig.base.json、或被extends链断裂 → TS Server 启动时跳过配置,退化为默认行为 -
package.json里缺"types": ["node"]→ 即使装了@types/node,TS Server 也可能忽略整个类型链
launch.json 的 program 字段写错会连锁导致模块解析失败
调试器连入口文件都找不到,后续所有模块路径解析都会失效。这不是类型问题,而是执行起点错误。
-
program必须指向编译后路径,如"${workspaceFolder}/dist/index.js";写.ts源码路径(如"${workspaceFolder}/src/index.ts")一定失败 - ESM 项目混用
require()加载 CommonJS 包 → 类型不匹配,优先改用import,或确保package.json有"type": "module" -
outDir和sourceMap在tsconfig.json中未设置 → 断点打在源码上,但运行时路径映射错乱,require()找不到对应文件
插件自身依赖缺失也会触发 Cannot find module 'xxx'
这个报错和你的业务项目无关,是插件代码在自己的运行上下文中找不到依赖。VSCode 插件有独立的 node_modules,必须在插件源码目录下安装。
- 自己开发的插件:进插件目录执行
npm install或pnpm install,不能复用工作区依赖 - 第三方插件异常:运行
Developer: Show Running Extensions,看状态是否为Activation failed;若频繁出现,说明插件依赖版本与当前 VSCode 不兼容(例如 Pylance 要求 Python 插件 ≥1.28.0) - AI 类插件(如
github.copilot)常带本地服务进程,禁用插件后残留后台服务,需手动清理缓存目录或执行类似codex skills list查漏
真正难排查的是“不报错却卡住”的依赖初始化阻塞
有些插件在启动时强行拉起语言服务器或全仓库扫描,既不崩溃也不报错,只是让整个编辑器响应变慢、补全延迟、右键菜单空白——这类问题不会出现在 Console 日志里,只能靠 code --status 和 Developer: Show Running Extensions 对照看 Activation Time。
比如 ms-python.python 旧版本会在打开任意文件时初始化 Python 环境,gitlens 默认开启全仓库符号缓存,remote-ssh 连接失败时 UI 线程直接挂起几秒。它们不抛 ERROR,但拖垮所有后续插件激活。这时候光看日志没用,得盯住耗时数字和状态字段。


















