launch.json中硬编码密码是高危操作,必须改用${env:db_password}引用系统环境变量,并配置skipfiles屏蔽敏感文件、删除address字段防止远程接管。

launch.json 里写密码等于把钥匙贴在门上
直接在 launch.json 的 env 字段硬编码 "DB_PASSWORD": "123456",调试启动时整个环境变量对象会注入进程,日志、截图、CI 导出都可能泄露密钥。这不是配置疏忽,是高危操作。
- 必须改用
${env:DB_PASSWORD}引用系统级环境变量 - Windows:在“系统属性→环境变量”中添加;macOS/Linux:在
~/.zshrc(非.bash_profile)里export DB_PASSWORD="xxx",然后彻底重启 VSCode(不是只关终端) - 验证方式:调试中打开 Debug Console,输入
process.env.DB_PASSWORD—— 返回undefined就说明没生效
skipFiles 不配,断点一设就漏密
VS Code 默认在所有 JS 文件响应断点,如果误点 .env 或 secrets.json 的某一行,调试器会尝试读取并显示内容,变量窗自动展开明文——哪怕你没写 console.log。
诊断并恢复通过 SSH 隧道连接的 OpenClaw 节点。用于解决配对必需错误、隧道冲突、远程端点错误以及 SSH 目标配置错误等问题。
- 在
launch.json同级(和program并列)加skipFiles字段 - 写法示例:
"skipFiles": ["**/.env", "**/config/secrets.json", "**/id_rsa"] -
**匹配任意层级,*只匹配当前目录;TypeScript 项目还需加"outFiles": ["${workspaceFolder}/dist/**/*.js"],否则断点打在编译后文件上,源码映射失效
--inspect=0.0.0.0 是远程接管入口
Node.js 调试协议默认监听 localhost:9229,但若配置了 "address": "0.0.0.0" 或命令行用了 --inspect=0.0.0.0:9229,任何能连你 IP 的人都可通过 chrome://inspect 接管进程、执行任意代码。
- 删掉
address字段即可(默认就是localhost) - 用
nodemon调试时,别写nodemon --inspect-brk index.js,要明确绑定本地:nodemon --inspect-brk=127.0.0.1:9229 index.js - Debug Console 不是沙盒:输
require('fs').readFileSync('./.env')依然能读出来——它跟主进程共享权限
node 命令找不到?PATH 没继承才是真问题
VSCode 内置终端报 command not found,不是插件或设置问题,而是它根本没拿到系统 PATH。即使终端里 node -v 正常,VSCode 启动时也可能走另一套环境。
- 先在系统终端(非 VSCode 内置终端)运行
which node,拿到真实路径,比如/usr/local/bin/node - VSCode 设置里搜
node.runtimePath,填入该绝对路径 - macOS 用户用 nvm,别依赖全局 alias,应在项目根目录放
.nvmrc,并确保从终端执行code .启动 VSCode - 改完必须彻底退出 VSCode(包括后台进程),再双击图标重开,否则环境不刷新
skipFiles 和 address 这两个字段——它们不报错、不警告,但一旦漏配,调试行为本身就构成安全风险。










