如何将环境变量添加到 launch.json in VSCode

How do I add environment variables to launch.json in VSCode

在 node.js 项目中使用新的 VSCode 编辑器。我正在尝试通过编辑 launch.json 文件来配置我的 "Launch" 配置文件以进行调试。我需要将连接字符串设置为环境变量。根据 launch.json 文件中的注释:

// Environment variables passed to the program.
"env": { }

我试过像这样添加我的环境变量:

"env":
{
"CONNECTION_STRING": "Data Source=server;Initial Catalog=catalog;User ID=uid;Password=pwd;MultipleActiveResultSets=true"
}

这会在我尝试启动我的应用程序时导致错误; "OpenDebug process has terminated unexpectedly"。我还没有找到任何可以解释问题所在的日志文件等。

当我设置环境变量并从标准命令提示符启动我的应用程序时,我知道这个应用程序可以正常工作。如果我在 launch.json 文件中注释掉我的变量,该应用程序也会按预期运行;我只是无法连接到数据库。

我假设我在 launch.json 文件中使用了错误的格式,但我还没有找到任何方法来完成这项工作。

有什么想法吗?

Windows(可能 linux)上的环境变量似乎有问题。它确实适用于 OS X。我们正在调查。期待尽快修复。

更新(2015 年 6 月 2 日): Visual Studio代码 0.3.0 包含对此的修复。

作为解决方法,您可以在启动时设置环境变量 VSCode,例如,使用这个小的 powershell 脚本:

param(
 $vars = @{}
)

$vars.Keys | % {
    write-host "adding env variable: $_=$($vars[$_])"
    [Environment]::SetEnvironmentVariable($_, $vars[$_], "Process")
}
$ver = "0.1.0"
& "$env:LOCALAPPDATA\Code\app-$ver\Code.exe"

将其保存为 vscode.ps1 并从命令行调用它,如下所示:

powershell ".\vscode.ps1 -vars @{ 'NODE_ENV'='test'; 'SOMETHING'='else' }"

我在 launch.json:

中使用 env 属性 成功通过了它们
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "pwa-node",
      "request": "launch",
      "name": "Launch Program",
      "skipFiles": [
        "<node_internals>/**"
      ],
      "program": "${workspaceFolder}/index.js",
      "env": {
        "TEST_VAR": "foo"
      }
    }
  ]
}

像这样,在你的OS下:

        "osx": {
            "MIMode": "lldb",
            "environment": [{"name": "DYLD_LIBRATY_PATH", "value": "/Users/x/boost_1_63_0/stage/lib/"}]
        },

从 2016 年底开始,您还可以将 envFile 用于 Node.js 个项目:

The VS Code Node debugger now supports to load environment variables from a file and passes them to the node runtime. https://github.com/Microsoft/vscode/issues/15964

另见:Load environment variables from external file (node)

To use this feature, add an attribute envFile to your launch configuration and specify the absolute path to the file containing the environment variables:

对于 Asp.Net 核心项目,此功能 isn't supported natively by vscode but it has recently been added to the omnisharp vscode extension. This feature is available since September 10, 2018 via v1.16.0

作为参考,我遇到了一个针对不同语言的类似问题(在 2020 年,在上面接受的答案中提到的错误被修复很久之后),我想指出一些事情:

根据 Microsoft's documentation 启动配置,许多常见选项(包括 "env")对于所有不同的 debugging/run 环境都不需要 功能 -也就是说,在我看来, 'provides' 环境变量的选项不是VS Code,而是选择特定的调试器扩展来实现此功能。因此,要么

  • 调试应用程序意外崩溃
  • 警告Property "env" is not allowed

可能是因为您正在使用的特定 language/debugger 不支持或尚未实现对环境变量的处理。

正如 qbiq 所说,如果环境变量不会在启动过程中发生变化,可能有一个快速的解决方法是导出它们并 运行 VS Code 设置了这组特定的变量。

我遇到了同样的问题,结果我的项目根目录中有一个 .env 文件覆盖了 launch.json 设置。您已被警告。 :)

这是有效的

只需添加以下内容

"env": { "NODE_ENV": "development" }

"configurations": [
    {
        "type": "node",
        "request": "launch",
        "name": "Launch Program", //TODO: cmd as launch program
        "skipFiles": [
            "<node_internals>/**"
        ],
        "program": "${workspaceFolder}\index.js",
        "env": {
            "NODE_ENV": "development"
        }
    }
]

2020 年 6 月,这在 OSX Catalina 10.15.5 上仍然非常具有误导性和破坏性。我正在使用 VSCode 内部人员和 CodeLLDB 扩展版本 1.5.3:

Version: 1.47.0-insider
Commit: 0913b1aa43191d8af0ccb4a133d9a8d7c1a81d69
Date: 2020-06-23T09:38:28.751Z (1 day ago)
Electron: 8.3.3
Chrome: 80.0.3987.165
Node.js: 12.13.0
V8: 8.0.426.27-electron.0
OS: Darwin x64 19.5.0

launch.json 上使用 env 关键字启动调试器时,我得到:

简而言之,在 launch.json 中使用 "env" 指令将在屏幕截图中显示消息。这将阻止 运行 调试器,令人惊讶的缺乏功能,但足够公平。

但是,使用 environment 而不是 env,没有弹出错误消息 但是 正在调试的运行时环境变量不可用, 所以 getenv(whatever) 不是 return 该键的实际值 :-!

版本 1.49.1

您可以使用 launch.json 文件中的 env 属性 或使用值为您的 .env 文件的位置。

警告:如果您已有 .env 文件,它会自动包含它。 (根据 denislexic 评论)

环境示例:

{
  ...
   "env": { "PORT": "4000" }
  ...
}

envFile 示例:

{
  ...
  "envFile": "${workspaceFolder}/server/.env",
  ...
}

它使用 envFile 变量为我的 django 项目工作。 您可以查看此 link:https://code.visualstudio.com/docs/editor/debugging

{
   "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Django",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/project/manage.py",
            "args": [
                "runserver"
            ],
            "django": true,
            "envFile": "${workspaceFolder}/project/Server/settings/local.env"
        }
    ]
}