我已设置 direnv 来导出 API 密钥:
$ cat .envrc
export API_KEY=XXX
此密钥在我的终端中可用:
$ echo $API_KEY
XXX
在我的 go 项目中,我正在读取环境变量以获取 API 密钥:
os.GetEnv("API_KEY")
当我尝试在 VSCode 中调试代码时,环境变量未设置:
b64_encoded_api_key := os.Getenv("API_KEY")
fmt.Printf("b64_encoded_api_key: -->%v<--\n", b64_encoded_api_key)
Starting: /Users/.../golang/1.23.1/packages/bin/dlv dap --listen=127.0.0.1:65079 --log-dest=3 from /Users/...
DAP server listening at: 127.0.0.1:65079
Type 'dlv help' for list of commands.
b64_encoded_api_key: --><--
然后我尝试更新
launch.json
文件以包含环境变量:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${fileDirname}",
"env": {
"API_KEY": "${env:API_KEY}",
}
}
]
}
但结果保持不变。
有没有办法让我在这个目录中设置的环境变量(通过direnv)在调试环境中设置?
我设法通过以下方式解决了这个问题:
更新文件
~/.config/direnv/direnv.toml
在
load_dotenv = true
部分添加[global]
(请参阅https://direnv.net/man/direnv.toml.1.html#global)
从我的工作区文件夹中删除
.envrc
文件
显然,
.envrc
和.env
都不能通过direnv一起加载。如果两者都存在,则将加载 .envrc
文件
在我的工作区文件夹中创建一个包含内容
.env
的 API_KEY=xxx
文件
在
"envFile": "${workspaceFolder}/.env"
中的配置中添加配置项
launch.json