通过 direnv 设置的环境变量未传递到 vscode 上的调试会话

问题描述 投票:0回答:1

我已设置 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)在调试环境中设置?

go vscode-debugger direnv
1个回答
0
投票

我设法通过以下方式解决了这个问题:

  • 更新文件

    ~/.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

© www.soinside.com 2019 - 2024. All rights reserved.