code runner不能运行云接口调用代码,因其仅执行node "$fullfilename",不加载.env、不设置node_env、不传递命令行参数,导致依赖secretid/secretkey、region等环境变量或cli参数的云sdk(如阿里云greenclient、腾讯云textmoderation)静默失败,报unauthorized或missingauthparams。

能直接调用,但必须手动配 launch.json 并显式传参,否则云服务商 SDK 会因环境缺失或参数未注入而静默失败。
为什么 Code Runner 不能跑云接口调用代码
它只执行 node 命令加文件路径,不加载 .env、不设 NODE_ENV、不传命令行参数——而文本审核接口(如阿里云 GreenClient、腾讯云 TextModeration)普遍依赖:SecretId/SecretKey 环境变量、Region 配置、以及有时必须的 --region 或 -e 参数。用 Code Runner 运行,控制台只会报 Unauthorized 或 MissingAuthParams,没有堆栈提示。
-
Code Runner的默认执行命令是node "$fullFileName",无法注入环境或参数 - 云 SDK 初始化时若读不到
process.env.SECRET_ID,多数会直接 throw 错误或返回空响应,而非明确提示“密钥缺失” - 即使你写了
require('dotenv').config(),如果.env文件没被加载(比如路径不对),照样失败
必须配 launch.json 的三个关键项
在项目根目录建 .vscode/launch.json,以下三项缺一不可:
ZenHeart zenlink 与 zenlink-mcp 为 OpenClaw,涵盖安装、MCP 注册、钩子接线、入站轮询及升级维护。
-
"program":指向你的主文件,例如"${workspaceFolder}/moderate.js";别写死成app.js,否则换文件就得改配置 -
"env":把敏感信息从代码里抽出来,写进这里(开发期可暂存,上线必须移除):{ "SECRET_ID": "your-secret-id", "SECRET_KEY": "your-secret-key", "REGION": "ap-guangzhou" } -
"args":如果接口要求传文本内容作为 CLI 参数(比如node moderate.js --text "违规内容"),必须加这一项:"args": ["--text", "测试文本"];注意数组顺序,SDK 解析依赖位置
调试时 process.env 为空?检查这三处
断点停在 console.log(process.env.SECRET_ID) 却输出 undefined,不是 SDK 问题,是 VSCode 没把环境变量传进去:
- 确认
launch.json里"env"是顶层字段,和"program"同级,不是嵌在"envFile"或其它对象里 - 别用
"envFile": ".env"—— VSCode 的envFile只支持绝对路径或${workspaceFolder}开头的相对路径,且文件必须存在;直接写"env"更稳 - 如果你用了
nodemon调试(比如"request": "attach"),那env必须在启动nodemon --inspect时通过--exec node --env-file=.env注入,launch.json的env不生效
云接口返回 401 或 InvalidParameter 的真实原因
这类错误几乎都来自请求构造阶段,和 Node 版本、VSCode 插件无关:
- 阿里云 Green SDK 要求
Region必须是字符串(如"cn-shanghai"),传数字或空字符串会触发InvalidParameter - 腾讯云
TextModeration对Content字段长度敏感:超 6000 字节直接拒收,且不提示具体长度限制,只报InvalidParameter.Content - 所有厂商 SDK 默认使用 HTTPS,但如果本地开了代理(比如 Charles/Fiddler),且未配置
http_proxy环境变量,请求会卡住或超时,表现为无响应而非报错
真正麻烦的是:这些条件在 node 命令行下运行能复现,但在 VSCode 调试器里因环境隔离更难定位——所以务必先用终端验证基础调用是否通,再进 VSCode 调试。










