Utilisation du nouvel éditeur VSCode sur un projet node.js. J'essaye de configurer mon profil "Launch" pour le débogage en éditant 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'essaye de lancer mon application; "Le processus OpenDebug s'est terminé de manière inattendue". Je n'ai pas encore trouvé de fichiers journaux, etc. qui pourraient expliquer le problème.
Je sais que cette application fonctionne correctement lorsque je configure la variable d'environnement et lance mon application à partir de l'invite de commande standard. 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 encore trouvé aucun moyen de faire fonctionner cela.
Des idées?
la source
Property env is not allowd in launch.json
env
a été renommé enenvironment
dans les versions actuelles de VSCode, la syntaxe est également modifiée. Voir le post de @Gabriel ci-dessous.cela fonctionne
ajoutez simplement ce qui suit
"env": {"NODE_ENV": "development"}
"configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", //TODO: cmd as launch program "skipFiles": [ "<node_internals>/**" ], "program": "${workspaceFolder}\\index.js", "env": { "NODE_ENV": "development" } } ]
la source
Comme ça, sous votre OS:
"osx": { "MIMode": "lldb", "environment": [{"name": "DYLD_LIBRATY_PATH", "value": "/Users/x/boost_1_63_0/stage/lib/"}] },
la source
cppdbg
dans mon cas)Depuis fin 2016, vous pouvez également utiliser les
envFile
projets pour Node.js :Voir aussi: Charger les variables d'environnement à partir d'un fichier externe (nœud) :
Pour les projets Asp.Net Core , cette fonctionnalité n'est pas prise en charge nativement par vscode, mais elle a récemment été ajoutée à l'extension vscode omnisharp. Cette fonctionnalité est disponible depuis le 10 septembre 2018 via la v1.16.0 .
la source
"args": ["-p", "${SERVER_PORT}"]
avec"envFile": "${workspaceFolder}/.env"
, mais on dirait que"${SERVER_PORT}"
ça ne marche pasJ'ai eu ce même problème et il s'avère que j'avais un
.env
fichier dans la racine de mon projet qui remplaçait leslaunch.json
paramètres. VOUS ÊTES AVERTI. :)la source
Pour référence, je suis tombé sur un problème similaire (en 2020, longtemps après la correction du bogue mentionné dans la réponse acceptée ci-dessus) pour une langue différente et je voudrais souligner quelque chose:
Selon la documentation de Microsoft sur les configurations de lancement, de nombreuses options courantes, y compris des fonctionnalités
"env"
non requises pour tous les différents environnements de débogage / d'exécution - c'est-à-dire qu'il me semble que ce n'est pas VS Code qui `` fournit '' l'option pour les variables d'environnement, mais plutôt le choix de l'extension de débogueur spécifique pour implémenter cette fonctionnalité. Par conséquent, soitProperty "env" is not allowed
peut se produire parce que le langage / débogueur particulier que vous utilisez ne prend pas en charge ou n'a pas implémenté la gestion des variables d'environnement.
Comme qbiq l'a dit, une solution de contournement rapide pour cela si les variables d'environnement ne vont pas changer à travers les lancements serait de les exporter et d'exécuter VS Code avec cet ensemble spécifique de variables.
la source
Version 1.49.1
Vous pouvez ajouter des variables env en utilisant la
env
propriété dans votre fichier launch.json ou en utilisant laenvFile
propriété avec la valeur correspondant à l'emplacement de votre fichier .env.exemple d'env:
{ ... "env": { "PORT": "4000" } ... }
Exemple d'envFile:
{ ... "envFile": "${workspaceFolder}/server/.env", ... }
la source
comme 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 à partir de la ligne de commande, comme ceci:powershell ".\vscode.ps1 -vars @{ 'NODE_ENV'='test'; 'SOMETHING'='else' }"
la source
En juin 2020, cela est toujours très trompeur et cassé sur OSX Catalina 10.15.5. J'utilise des initiés VSCode avec l' extension CodeLLDB version 1.5.3 :
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
Lors du lancement du débogueur avec le
env
mot clé sur,launch.json
j'obtiens ceci:Donc, en un mot, l'utilisation de la
"env"
directive danslaunch.json
affichera le message dans la capture d'écran. Cela empêchera d'exécuter le débogueur, fonctionnalité manquante surprenante, mais assez juste.Mais alors, en utilisant à la
environment
place deenv
, aucun message d'erreur n'apparaît mais les variables d'environnement ne sont pas disponibles sur le runtime en cours de débogage, doncgetenv(whatever)
ne renvoie pas la valeur réelle de cette clé: -!la source