有什么方法可以在Visual Studio Code中设置环境变量?


Answers:


72

假设您要进行调试会话(?),则可以env启动配置中包含一个属性。

如果您在工作区中打开.vscode / launch.json文件,或选择“调试”>“打开配置”,则应该看到一组用于调试代码的启动配置。然后,可以向其添加一个env带有string:string字典的属性。

这是一个ASP.NET Core应用程序的示例,其标准Web模板将设置ASPNETCORE_ENVIRONMENTDevelopment

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": ".NET Core Launch (web)",
      "type": "coreclr",
      "request": "launch",
      "preLaunchTask": "build",
      // If you have changed target frameworks, make sure to update the program path.
      "program": "${workspaceFolder}/bin/Debug/netcoreapp2.0/vscode-env.dll",
      "args": [],
      "cwd": "${workspaceFolder}",
      "stopAtEntry": false,
      "internalConsoleOptions": "openOnSessionStart",
      "launchBrowser": {
        "enabled": true,
        "args": "${auto-detect-url}",
        "windows": {
          "command": "cmd.exe",
          "args": "/C start ${auto-detect-url}"
        },
        "osx": {
          "command": "open"
        },
        "linux": {
          "command": "xdg-open"
        }
      },
      "env": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "sourceFileMap": {
        "/Views": "${workspaceFolder}/Views"
      }
    },
    {
      "name": ".NET Core Attach",
      "type": "coreclr",
      "request": "attach",
      "processId": "${command:pickProcess}"
    }
  ]
}


2
感谢您的回答。我正在开发节点应用程序,并且在那里使用一些环境变量(例如process.env.VAR_NAME),运行项目时需要这些变量。在这种情况下,配置环境变量是否可用?没用
Shakti Kumar Das

1
上面的示例在使用vscode中的调试器时设置了一个env变量(当从vscode中启动时,它也适用于节点调试器)。也许您可以问另一个问题,具体问题到底是什么?您是从vscode运行吗?也许共享您正在使用的launch.json?它是否运行但只是没有设置env变量,还是根本不运行?如果您想在评论中标记我(只需在评论中使用@stewart_r),我们将很乐意为您提供帮助,但是我敢肯定,如果您提出足够详细的问题,其他人也会提供很多帮助。
Stewart_R

我觉得我已经回答了这个问题。如果您仍在挣扎,请提出一个新问题,尝试尽可能地遵循本指南:stackoverflow.com/help/how-to-ask以使社区能够获得最大的机会提供帮助
Stewart_R

感谢您发布答案@Stewart_R。我认为这应该是公认的答案,并且应该放在顶部。
RAM

32

在VSCode launch.json中,您可以使用“ env”并在那里配置所有环境变量:

{
    "version": "0.2.0",
    "configurations": [
        {           
            "env": {
                "NODE_ENV": "development",
                "port":"1337"
            },
            ...
        }
    ]
}

如果我有两种配置怎么办?如何在它们之间切换?例如,第二个人的名字是“启动程序2”。我的代码只是导入一个环境变量,但是我希望它根据当前配置导入不同的值。我的意思是仅仅为了一个简单的启动,我不在调试会话中。
谢尔盖·扎哈罗夫

在“配置”中的@SergeyZakharov中,您可以添加一个新的(只需更改“名称”),然后在调试选项卡中选择要使用的配置。
Petro Franko

18

对于更高级的Go语言方案,您可以加载环境文件,如下所示:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch",
      "type": "go",
      "request": "launch", 
      "mode": "debug",
      "remotePath": "",
      "port": 2345,
      "host": "127.0.0.1",
      "program": "${workspaceFolder}",
      "envFile": "${workspaceFolder}/.env",
      "args": [], 
      "showLog": true
    }
  ]
}

将.env文件放在您的文件夹中,然后添加var,如下所示:

KEY1="TEXT_VAL1"
KEY2='{"key1":val1","key2":"val2"}'

详细信息:https : //medium.com/@reuvenharrison/using-visual-studio-code-to-debug-a-go-program-with-environment-variables-523fea268271


这是最好的答案
KyleMit

6

我通过导航到带有代码的文件夹并运行从命令行运行vscode

code .

如果这样做,所有bash/zsh变量都将传递给vs代码。您可以更新.bashrc/.zshrc文件,也可以

export KEY=value

在打开之前。


3

他们能让它变得更困难吗?我所做的就是:打开系统属性,单击“高级”,添加环境变量,关闭Visual Studio,然后再次启动它。


我相信最初要求在IDE中设置环境变量的请求是因为他不想在系统中这样做。一个可能的原因可能是他没有管理员权限来更改系统的环境变量
Bruce

1

我的回复还很晚。我遇到了同样的问题。我在Windows 10上。这是我做的:

  • 打开一个新的命令提示符(CMD.EXE)
  • 设置环境变量。 set myvar1=myvalue1
  • 通过键入从命令提示符启动VS Code code,然后按ENTER
  • VS代码启动,它继承了我在父CMD窗口中设置的所有自定义变量

(可选)您也可以使用“控制面板”->“系统属性”窗口更永久地设置变量

希望这可以帮助。


我喜欢你的回答。但是也可以在vscode中定义环境变量。我知道可以对vscode中的终端执行此操作,但是我也希望任何vscode扩展都可以识别它。我相信您的方法确实达到了我想要的目的,但是想知道vscode是否具有可以执行相同操作的任何设置。
布鲁斯

尝试执行此操作时,请关闭所有VS Code实例。正在运行的实例只会生成一个新窗口并关闭您生成的进程。
布伦特

0

如果您已经使用npm模块分配了变量dotenv,那么它们应该显示在全局变量中。该模块在这里

运行调试器时,转到“变量”选项卡(如果不可见,请右键单击以重新打开),然后依次打开“全局”和“进程”。然后应该有一个env部分...

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明


0

因为它不能回答您的问题,但是搜索vm参数时,我在该页面上跌跌撞撞,似乎没有其他内容。因此,如果您想传递vm参数,就像这样

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "java",
      "name": "ddtBatch",
      "request": "launch",
      "mainClass": "com.something.MyApplication",
      "projectName": "MyProject",
      "args": "Hello",
      "vmArgs": "-Dspring.config.location=./application.properties"
    }
  ]
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.