如何在VSCode中向launch.json添加环境变量

Jas*_*ble 49 json node.js visual-studio-code

在node.js项目上使用新的VSCode编辑器.我试图通过编辑launch.json文件来配置我的"启动"配置文件以进行调试.我需要将connectionstring设置为环境变量.根据launch.json文件中的注释:

// Environment variables passed to the program.
"env": { }
Run Code Online (Sandbox Code Playgroud)

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

"env":
{
"CONNECTION_STRING": "Data Source=server;Initial Catalog=catalog;User ID=uid;Password=pwd;MultipleActiveResultSets=true"
}
Run Code Online (Sandbox Code Playgroud)

当我尝试启动我的应用时,这会导致错误; "OpenDebug进程意外终止".我还没有找到任何可能解释问题的日志文件等.

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

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

有任何想法吗?

小智 54

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

{
  "version": "0.2.0",
  "configurations": [
    {
    "type": "node",
    "request": "launch",
    "name": "SLS Webpack",
    "protocol": "legacy",
    "program": "${workspaceRoot}/node_modules/.bin/sls",
    "cwd": "${workspaceRoot}",
    "args": ["webpack", "watch", "-f", "${fileBasenameNoExtension}", "-p", "${fileDirname}/event.json"],
    "env": {"AWS_REGION":"us-east-1", "SLS_DEBUG":"*"},
    "outFiles": ["${cwd}/dist/**/*.js"],
    "sourceMaps": true,
    "smartStep": true    
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

  • 我收到“launch.json 中不允许使用属性环境” (18认同)
  • 在当前版本的 VSCode 中,“env”已重命名为“environment”,语法也发生了变化。请参阅下面@Gabriel 的帖子。 (6认同)
  • 从评论来看,感觉好像“env”属性存在问题。只是为了确认 `env` 从今天起在 VS Code 1.67 上适用于我(对于 `"type": "go"`)。 (3认同)
  • 截至今天(2021 年 8 月 2 日),我正在使用 VSCode 的最新版本“1.58.2”,@aljohn-yamaro 的答案对我有用。 (2认同)

Alj*_*aro 47

这是工作

在此处输入图片说明

只需添加以下内容

"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"
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

  • 自最初的问题以来,随着 VS Code 任务运行程序的所有更改,这个答案应该在列表中向上移动,它是正确的并且有效! (7认同)
  • 是的,这在 2021 年有效。 (3认同)

And*_*and 13

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

Visual Studio Code的Andre Weinand

  • Visual Studio代码0.3.0已修复此问题. (2认同)

Isa*_*Pak 12

版本 1.49.1

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

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

环境示例:

{
  ...
   "env": { "PORT": "4000" }
  ...
}
Run Code Online (Sandbox Code Playgroud)

envFile 示例:

{
  ...
  "envFile": "${workspaceFolder}/server/.env",
  ...
}
Run Code Online (Sandbox Code Playgroud)

  • 两者对于 python 来说仍然是坏的 (5认同)
  • 请添加一条警告,说明如果您已有“.env”文件,它会自动包含它... (2认同)
  • envFile 示例在 JavaScript 中为我工作谢谢 Isaac (2认同)

小智 10

它使用该变量适用于我的 django 项目envFile。您可以查看此链接: 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"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)


CpI*_*ILL 9

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


Gab*_*iel 6

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

        "osx": {
            "MIMode": "lldb",
            "environment": [{"name": "DYLD_LIBRATY_PATH", "value": "/Users/x/boost_1_63_0/stage/lib/"}]
        },
Run Code Online (Sandbox Code Playgroud)

  • 这也适用于我的 Linux,但我认为它也与调试器的类型密切相关(在我的例子中为“cppdbg”) (2认同)
  • @CeesTimmerman,这样你就可以拥有多个环境变量......每个变量都有一个名称和值的字典。有点冗长,但它确实允许自动完成“名称”和“路径”。 (2认同)

B12*_*ter 5

从2016年末开始,您还可以将envFile for.Node.js项目用于

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

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

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

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

  • 我想做 `"args": ["-p", "${SERVER_PORT}"]` 和 `"envFile": "${workspaceFolder}/.env"`,但看起来像 `"${SERVER_PORT} “`不起作用 (2认同)

ste*_*wer 5

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

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

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

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

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