Launch.json:如何引用环境变量 您所在的位置:网站首页 json对象赋值 Launch.json:如何引用环境变量

Launch.json:如何引用环境变量

2023-03-28 19:15| 来源: 网络整理| 查看: 265

文章描述:Launch.json:如何引用环境变量

本文介绍了Launch.json:如何引用环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述 为了在一个地方定义我的环境变量,配置了一个运行外壳脚本的任务。该任务在我的launch.json中以preLaunchTask身份运行。

在我的启动.json中,我现在尝试引用我在脚本中配置的环境变量(如export AWS_REGIO="eu-west-1")。

启动.json如下所示:

{ "version": "0.2.0", "configurations": [ { "name": "Launch", //.. "env": { //"AWS_REGIO": "us-east-1", //works "AWS_REGIO": "${env:AWS_REGIO}", //doesn't work, why? }, "args": [], "preLaunchTask": "setupEnv", } ] } 推荐答案 不起作用,为什么?

根据此post来自用户Weinand...

在VS代码替换之后读取和处理;.env;文件 变量。因此您的调试程序确实会 使用正确的值查看环境变量&foo; 启动.json中的代码变量替换将看不到它。 原因是文件是node.js概念,而不是 通用平台机制。所以VS代码不知道任何关于 .env文件,但node.js调试器知道.env文件。

.Launch.json中的此功能特定于在ode.js上运行的应用程序,尽管这不是M$在其documentationsfor VSCode中解释的。

可能的解决方案

对于Python应用程序(可能也适用于其他平台),只要您的应用程序中存在以下配置,.env文件(或您喜欢的名称)中定义的环境变量将可用于您的应用程序。

{ "version": "0.2.0", "configurations": [ { [...] "envFile": "${workspaceFolder}/.env", // Path to the ".env" file. [...] } ] }

请注意,仅导出变量...

export SOMEVAR_A=1234

...不会使环境变量SOMEVAR_A可用于VSCode调试器正在执行的应用程序也不会使设置可用,尤其是在和args;(;配置和)中-在启动ch.json中,例如...

{ "version": "0.2.0", "configurations": [ { [...] "env": { "SOMEVAR_A": "${env:SOMEVAR_A}" }, "args": [ "${env:SOMEVAR_A}" ] [...] } ] }

注意:在我们的测试中,${env:SOMEVAR_A}语法在任何情况下都不起作用。也就是说,不适用于应用程序(;env;),也不适用于Launch.json中的设置(;args;)。

加i:Dirt Hack

对于;args;(&Quot;Configurations&)中存在的值,您可以使用下面的Hack...

{ "version": "0.2.0", "configurations": [ { [...] "envFile": "${workspaceFolder}/.env", "args": [ "`source "${workspaceFolder}/.env";echo ${SOMEVAR_A}`" ] [...] } ] }

.因为;envFile中的配置不起作用。

请注意,以下结构...

[...] "args": [ "`echo ${SOMEVAR_A}`" ] [...]

.也适用于;args&,只要以前以常规方式导出了环境变量&qot;SOMEVAR_A&qot;。

同样的推理适用于任务(tasks.json),但在这两种情况下,我们不能保证这一点。

提示:一个.env文件示例

SOMEVAR_A="abcd" SOMEVAR_B="efgh" SOMEVAR_C=123456

加II:导出变量

在某些情况下,您需要导出变量(例如export SOMEVAR_A="abcd"),以便它们可以被某些资源消耗。在这些情况下,可能会出现问题,因为我们导出变量的事实阻止(我们不知道为什么)在配置"envFile": "${workspaceFolder}/.env"的上下文中看到它们。 绕过这些限制的解决方法是在变量集之前添加set -a,在变量集之后添加set +a。有了这一点,我们就能够满足本例中的两个场景... #!/usr/bin/env bash set -a SOMEVAR_A="abcd" SOMEVAR_B="efgh" SOMEVAR_C=123456 set +a

.或者以更兼容、更安全的方式使用set -a/set +a,如本例所示...

[...] "args": [ "`set -a;source "${workspaceFolder}/.env";set +a;echo ${SOMEVAR_A}`" [...]

VSCode对环境变量的支持一团糟!

结论

我们不知道我们在这里处理的限制是来自VSCode自己的设计,还是错误。无论如何,这似乎没有多大意义。

这些过程在Manjaro Linux(基于Arch)上进行了测试。

谢谢!

发布时间:2023-03-13 01:41:25

本文链接:https://www.cdbsd.net/jiaoben/99e33dc4bb48b911b3b531287e6db5fe.html

文章版权声明:除非注明,否则均为贝斯达系统下载网 原创文章,转载或复制请以超链接形式并注明出处。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有