【问题标题】:Set an env variable using a CLI tool before launching the debugger in VSCode在 VSCode 中启动调试器之前使用 CLI 工具设置环境变量
【发布时间】:2021-01-15 12:42:05
【问题描述】:

我有一个 Go 应用程序,它使用 Postgres DB on Cloud (Heroku),并将 DB Url 设置为环境变量,按照指南调用 Heroku CLI。

这样应用就可以用命令启动了

DATABASE_URL=$(heroku config:get DATABASE_URL -a my-db) my-app

现在我想在 VSCode 中以调试模式启动应用程序,但在调试开始之前我找不到设置 DATABASE_URL 变量的正确方法。我试过preLaunchTask,但没有成功。我与preLaunchTask 一起使用的配置是这些

launch.json

{
 "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch",
      "type": "go",
      "request": "launch",
      "mode": "auto",
      "preLaunchTask": "setPostgresDbUrl",
      "program": "${fileDirname}",
      "env": {},
      "args": []
    }
  ]
 }

tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "setPostgresDbUrl",
      "type": "shell",
      "command": "bash ./setUrl.sh"
    }
  ]
}

setUrl.sh

#!/usr/bin/env bash
DATABASE_URL=$(heroku config:get DATABASE_URL -a go-batch)

【问题讨论】:

  • 你有没有想过这个问题?我也有同样的问题。我目前的理解是任务将在自己的进程中运行,因此在该脚本中修改该环境变量不会影响启动进程 env。
  • @Zachary Rhodes 我添加了一个答案来描述我解决问题的方式

标签: visual-studio-code vscode-debugger vscode-tasks delve


【解决方案1】:

我已经能够以稍微不同的方式解决问题,即使用.env 文件来设置从中读取 url 的环境变量。

所以,在项目的根文件夹中,我有一个像这样的.env 文件

 the url may change - to get the current url run the command 
# echo $(heroku config:get DATABASE_URL -a go-batch)

DATABASE_URL=postgres://blah-blah-1.eu-west-1.compute.amazonaws.com:5432/blah

然后在launch.json我指定读取这样的环境变量值

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "LaunchGo",
      "type": "go",
      "request": "launch",
      "mode": "auto",
      //"preLaunchTask": "setPostgresDbUrl",
      "program": "${fileDirname}",
      "envFile": "${workspaceFolder}/.env",
      "args": []
    }
  ]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-24
    • 2021-10-08
    • 2023-01-24
    • 2013-04-17
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多