VSCode终端双重环境名是Conda自动激活与Python插件二次激活冲突所致;调试器PATH为空需在launch.json用env字段补全;code-runner不支持ESM和stdin,应改用F5调试或自定义executorMap。

VSCode终端里出现双重环境名(如(base) (myenv))
这不是bug,是Conda自动激活 + VSCode Python插件二次激活撞车了。系统shell(比如~/.zshrc)里有conda activate base,同时VSCode的Python扩展又检测到项目绑定了myenv,两边都往提示符里塞前缀,结果叠在一起。
- 先验证:用系统终端(非VSCode内置终端)执行
echo $PS1,看是否已有(base);再在VSCode终端里执行同样命令,对比输出 - 临时绕过:在VSCode设置里搜
python.terminal.activateEnvironment,设为false,关掉插件的自动激活 - 根治办法:删掉
~/.zshrc末尾手动加的conda activate行,只保留conda init生成的初始化块——它本身不激活环境,只提供conda命令 - 如果必须默认进某个环境,改用
conda config --set auto_activate_base false,再在项目根目录放.condarc指定envs_dirs和default_env
launch.json调试时提示“找不到node”,但终端能跑node -v
终端和调试器用的是两套环境变量:终端靠terminal.integrated.env.*注入,而launch.json启动的是干净进程,PATH为空。你看到终端里node -v成功,不代表F5能用。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
-
launch.json里不能写environment(已弃用),必须用env字段:"env": { "PATH": "${env:PATH}:/usr/local/bin" } - macOS Apple Silicon用户注意路径:
/opt/homebrew/bin要显式加上,别只信${env:PATH}——它可能根本没继承shell配置 - Windows下路径拼接用分号
;,不是冒号:,且${env:PATH}必须保留,否则git、npm全挂 - 改完
launch.json后,必须关闭所有调试会话再重试,旧会话缓存PATH不会刷新
code-runner执行JS报Cannot use import statement或卡在process.stdin
code-runner默认用node $fileName,既不读package.json里的"type": "module",也不支持交互式输入,更不管编码——它只是把文件丢给Node,其余全靠猜。
- ESM项目:在VSCode设置里搜
code-runner.executorMap,把javascript值改成"node --experimental-specifier-resolution=node $fileName" - 中文路径/乱码:补
-r utf-8,完整值为"node -r utf-8 --experimental-specifier-resolution=node $fileName" - 含
process.stdin的脚本:code-runner不接管stdin流,必然假死;要么换用F5调试(它会捕获输入),要么手动在集成终端里跑node xxx.js - 别指望它自动识别
type=module——这是Node原生行为,code-runner不解析package.json
terminal.integrated.shellArgs设了["-l"]还是不加载~/.zshrc
["-l"]只保证走login shell流程,但~/.zshrc开头如果有防护逻辑(比如[[ -n $ZSH_EVAL_CONTEXT ]] && return),就会提前退出,根本读不到后面的export PATH=...。
- 验证是否真加载:在
~/.zshrc第一行加echo "zshrc loaded",重启VSCode后新开终端,看有没有这行输出 - 若没输出,说明被防护逻辑拦住了;把
echo移到防护块之后,或删掉那行return(仅限开发机,生产环境慎动) - macOS Catalina及以后默认zsh,别去动
~/.bash_profile——它已被忽略,除非你手动chsh -s /bin/bash - 改完配置必须彻底退出VSCode:macOS右键Dock图标选「退出」,Windows用任务管理器杀光所有
Code.exe进程
${env:PATH}在不同上下文里展开结果可能完全不同。

















