根本原因是vscode内置终端未加载shell环境变量,需确认yarn路径、改用命令行启动vscode(macos)或配置git bash(windows),或手动设置terminal.integrated.env;任务默认走yarn需package.json含packagemanager字段并重新生成tasks;pnp失效应启用corepack并yarn set version stable;调试需用--inspect-brk或直指真实入口。

VSCode 里 yarn 命令报 “command not found” 怎么办
根本原因不是 VSCode 配置错了,而是终端没加载你的 shell 环境变量(比如 yarn 安装在 ~/.yarn/bin 或通过 corepack 启用,但 VSCode 内置终端没读取 ~/.zshrc 或 ~/.bash_profile)。
- 先在系统终端里运行
which yarn,确认路径;再打开 VSCode 终端,执行同样命令——如果输出为空,说明终端没继承 shell 配置 - macOS 用户检查 VSCode 是否从 Dock 启动(会绕过 shell 初始化),改用命令行启动:
code . - Windows 用户注意:若用 Git Bash,需在 VSCode 设置里把终端默认配置为 Git Bash,而非 PowerShell
- 通用兜底方案:在 VSCode 设置里搜
terminal.integrated.env,手动加环境变量,例如 macOS 上设"terminal.integrated.env.osx": {"PATH": "/opt/homebrew/bin:/usr/local/bin:${env:PATH}"}
怎么让 VSCode 的“运行脚本”(Run Task)默认走 yarn 而不是 npm
VSCode 的任务系统本身不“默认”绑定任何包管理器,它只认你定义的 scripts 和指定的 shell。所谓“默认用 yarn”,其实是靠 package.json 里的 packageManager 字段 + 正确的任务模板实现的。
- 确保项目根目录
package.json有"packageManager": "yarn@4.0.0"(Yarn 3.1+ 支持),这是现代 Yarn 的声明式依据 - 删掉项目里残留的
.vscode/tasks.json(如果存在),避免旧配置硬编码了npm install - 按
Cmd/Ctrl+Shift+P→ 输入Tasks: Configure Task→ 选Create tasks from package.json,VSCode 会自动读取yarn脚本并生成带"type": "shell"的任务 - 生成的任务里会包含类似
"command": "yarn", "args": ["build"],而不是"npm run build"—— 这才是关键区别
yarn install 在 VSCode 里不触发 PnP 或 .pnp.cjs 怎么办
这通常是因为 VSCode 没启用 Corepack,或项目没正确初始化 Yarn(尤其是 Yarn Berry)。PnP 不是开关选项,它依赖 Yarn 版本和项目初始化方式。
- 先运行
corepack enable(全局一次),再进项目目录执行yarn set version stable,这会生成.yarn目录和.pnp.cjs - 检查
.yarnrc.yml是否含nodeLinker: pnp(Yarn 3 默认值),不是nodeModules - VSCode 的 JS/TS 语言服务可能仍报模块找不到——这时要在工作区设置里加:
"typescript.preferences.includePackageJsonAutoImports": "auto",并重启 TS 服务器(Cmd/Ctrl+Shift+P→Typescript: Restart TS server) - 别手动删
node_modules后再跑yarn install:PnP 模式下它本就不该存在,强行留着反而会让工具链混淆
调试时断点进不到 yarn 脚本里?
VSCode 的 Node.js 调试器默认只 attach 到 node 进程,而 yarn run xxx 是个 shell wrapper,里面真正执行的是 node xxx.js 或其他解释器,断点自然失效。
- 不要直接 Debug
yarn dev,改用yarn run --inspect-brk dev(Yarn 1)或yarn node --inspect-brk ./scripts/dev.js(Yarn 3+ 推荐) - 更稳妥的做法:在
launch.json里写明真实入口,例如"program": "${workspaceFolder}/node_modules/.bin/vite",然后用yarn的node子命令替代 - 如果脚本用了
yarn exec或yarn create,它们本质是独立进程,没法被常规 Node 调试器捕获——得换用系统级调试工具(如strace或Process Explorer)
最常被忽略的一点:Yarn 的 .yarn/sdks 目录和 VSCode 的 TypeScript SDK 自动探测机制是联动的,但只有当你用 yarn dlx @yarnpkg/sdks typescript 显式生成后才生效。不配这个,哪怕 yarn 跑得再顺,TS 类型提示和跳转依然可能出错。











