在VSCode中启动调试器之前,请使用CLI工具设置环境变量

问题描述

我有一个Go应用程序,该应用程序使用Cloud(Heroku)上的Postgres DB并将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 文件来设置从中读取 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": []
    }
  ]
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...