153

在 node.js 项目上使用新的 VSCode 编辑器。我正在尝试通过编辑 launch.json 文件来配置我的“启动”配置文件以进行调试。我需要将连接字符串设置为环境变量。根据 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 进程意外终止”。我还没有找到任何可以解释问题所在的日志文件等。

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

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

有任何想法吗?

4

11 回答 11

159

我使用以下env属性成功地传递了它们launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "pwa-node",
      "request": "launch",
      "name": "Launch Program",
      "skipFiles": [
        "<node_internals>/**"
      ],
      "program": "${workspaceFolder}/index.js",
      "env": {
        "TEST_VAR": "foo"
      }
    }
  ]
}
于 2017-07-31T23:08:24.130 回答
53

这是有效的

在此处输入图像描述

只需添加以下内容

“env”:{“NODE_ENV”:“发展”}

"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-03-25T02:50:50.367 回答
29

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

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

于 2015-05-03T21:49:10.813 回答
18

像这样,在你的操作系统下:

        "osx": {
            "MIMode": "lldb",
            "environment": [{"name": "DYLD_LIBRATY_PATH", "value": "/Users/x/boost_1_63_0/stage/lib/"}]
        },
于 2017-11-23T01:51:54.987 回答
16

自 2016 年底以来,您还可以使用envFile for Node.js 项目

VS Code 节点调试器现在支持从文件加载环境变量并将它们传递给节点运行时。https://github.com/Microsoft/vscode/issues/15964

另请参阅:从外部文件(节点)加载环境变量

要使用此功能,请将属性 envFile 添加到启动配置并指定包含环境变量的文件的绝对路径:

对于 Asp.Net Core 项目,vscode本身不支持此功能,但它最近已添加到omnisharp vscode 扩展中。此功能自 2018 年 9 月 10 日起通过v1.16.0 提供

于 2018-09-24T06:44:06.973 回答
16

版本 1.49.1

env您可以使用launch.json 文件中的envFile属性或使用值为 .env 文件位置的属性来添加 env 变量。

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

环境示例:

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

环境文件示例:

{
  ...
  "envFile": "${workspaceFolder}/server/.env",
  ...
}
于 2020-09-22T16:41:16.913 回答
9

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

于 2020-01-24T04:21:40.100 回答
4

envFile它使用该变量适用于我的 django 项目。您可以查看此链接: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"
        }
    ]
}
于 2021-08-25T07:43:55.890 回答
3

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

根据Microsoft关于启动配置的文档,许多常见选项,包括所有不同调试/运行环境"env"都不需要的功能 - 也就是说,在我看来,不是 VS Code 为环境变量“提供”选项,而是选择特定的调试器扩展来实现此功能。因此,无论是

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

可能会发生,因为您使用的特定语言/调试器不支持或未实现对环境变量的处理。

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

于 2020-01-20T15:36:26.993 回答
2

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

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

使用env关键字 on启动调试器时,launch.json我得到以下信息:

在此处输入图像描述

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

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

于 2020-06-25T04:42:50.577 回答
1

作为一种解决方法,您可以在启动 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' }"
于 2015-05-23T22:01:46.340 回答