vscode中swc/esbuild报command not found根本原因是未加载shell配置导致path缺失,应改用npx调用并添加--stdin=off避免watch静默挂起。

VSCode里执行swc/esbuild命令报command not found
根本不是没装,是 VSCode 启动时没加载 shell 初始化文件(比如 ~/.zshrc),PATH 里压根没有这些二进制。你在终端里能跑,tasks 里就挂。
- 临时验证:在 VSCode 内置终端里手动执行
source ~/.zshrc(macOS/Linux)或RefreshEnv(PowerShell),再试swc --version或esbuild --version - 长期解法:别依赖全局安装,统一用
npx swc或npx esbuild——它不查 PATH,直接走node_modules,版本自动对齐 - 绝对别在
tasks.json里写死路径,比如/usr/local/bin/swc,跨系统立刻失效
tasks.json配了--watch但任务卡住不动
这是静默失败最典型的场景:esbuild 和 swc 的 --watch 默认监听 stdin,而 VSCode Tasks 不分配伪 TTY,进程直接挂起,不报错、无输出、CPU 占用低。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 立刻加
--stdin=off(仅 esbuild 支持),写进 args 列表里 - swc 目前(v1.3.104+)虽支持
--watch,但 VSCode 无法可靠接管其子进程生命周期,建议改用单次构建 + 手动触发(Ctrl+Shift+B) - 真要热重载,esbuild 推荐用
esbuild serve启本地服务,自带 sourcemap;swc 没内置 server,得靠nodemon或chokidar-cli包一层
TSX项目编译通过但VSCode里满屏红波浪线
esbuild/swc 能把 .tsx 编译成 JS,但 TypeScript 语言服务(TS Server)完全不知道你用了什么 JSX 配置,仍按默认规则校验。
-
tsconfig.json必须设"jsx": "preserve",让 TS 不处理 JSX,全交给构建工具 - esbuild 命令里显式加
--loader:.tsx=tsx--jsx-factory=React.createElement--jsx-fragment=React.Fragment - swc 的
.swcrc里 jsx 配置必须写成:"jsc": { "transform": { "react": { "jsx": "react-jsx" } } },不是照搬 tsconfig 的jsx字段 - swc 完全不读
tsconfig.json,哪怕你改了target或module,它也视而不见
source map断点失效或跳不到源码
不是 debugger 有问题,是生成的 source map 路径没对上,或者根本没生成。
- esbuild 必须加
--sourcemap或--sourcemap=inline;swc 必须加--source-maps(单独文件)或--source-maps=inline - swc 生成的
sources默认是["index.ts"],但实际路径是src/index.ts,需在.swcrc里显式配"sourceRoot": "../src" - launch.json 中
outFiles要匹配输出路径,比如"outFiles": ["${workspaceFolder}/build/**/*.js"],且sourceMaps设为true - swc-node 运行时若要断点,需加
--enable-source-maps参数,并确保SWCRC=true环境变量生效
--stdin=off,或少一个 problemMatcher,错误就彻底消失在黑盒里。










