web-dev-qa-db-fra.com

Comment ajouter des variables d'environnement à launch.json dans VSCode

Utilisation du nouvel éditeur VSCode sur un projet node.js. J'essaie de configurer mon profil "Launch" pour le débogage en modifiant le fichier launch.json. J'ai besoin de configurer une chaîne de connexion en tant que variable d'environnement. Selon les commentaires dans le fichier launch.json:

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

J'ai essayé d'ajouter ma variable d'environnement comme ceci:

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

Cela provoque une erreur lorsque j'essaie de lancer mon application. "Le processus OpenDebug s'est terminé de manière inattendue". Je n'ai pas encore trouvé de fichier journal, etc. pouvant expliquer le problème.

Je sais que cette application fonctionne correctement lorsque je configure la variable d'environnement et que je lance mon application à partir de la commande standard Invite. L'application fonctionne également comme prévu si je commente ma variable dans le fichier launch.json; Je ne peux tout simplement pas me connecter à la base de données.

Je suppose que j'utilise le mauvais format dans le fichier launch.json, mais je n'ai pas encore trouvé le moyen de faire en sorte que cela fonctionne.

Des idées?

43
Jason Kibble

Il semble y avoir un problème de variables d’environnement sous Windows (et probablement sous Linux). Cela fonctionne sous OS X. Nous enquêtons. Attendez-vous à un correctif bientôt.

André Weinand,
Code Visual Studio

Mise à jour (2 juin 2015): Visual Studio Code 0.3.0 contient un correctif pour cela.

13
Andre Weinand

Je les passe avec succès en utilisant la propriété env dans 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    
    }
  ]
}
47
btburton42

Comme ça, sous votre OS:

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

Depuis fin 2016, vous pouvez également utiliser le envFile pour les projets Node.js :

Le débogueur Code VS Node) prend désormais en charge le chargement des variables d’environnement depuis un fichier et les transmet au runtime du noeud. https://github.com/Microsoft/vscode/issues/15964

Voir aussi: Charger les variables d'environnement à partir d'un fichier externe (noeud) :

Pour utiliser cette fonctionnalité, ajoutez un attribut envFile à votre configuration de lancement et spécifiez le chemin absolu du fichier contenant les variables d'environnement:

Pour les projets Asp.Net Core , cette fonctionnalité n'est pas prise en charge de manière native par vscode mais récemment été ajouté à l'extension omnisharp vscode. Cette fonctionnalité est disponible depuis le 10 septembre 2018 via v1.16. .

4
B12Toaster

en guise de solution de contournement, vous pouvez définir des variables d'environnement lors du démarrage de VSCode, par exemple, à l'aide de ce petit script 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"

Enregistrez-le sous vscode.ps1 et appelez-le depuis la ligne de commande, comme ceci:

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