Trabalhar com o novo editor VSCode em um projeto node.js. Estou tentando configurar meu perfil "Launch" para depuração editando o arquivo launch.json. Eu preciso configurar um connectionstring como uma variável de ambiente. De acordo com os comentários no arquivo launch.json:
// Environment variables passed to the program.
"env": { }
Eu tentei adicionar minha variável de ambiente assim:
"env":
{
"CONNECTION_STRING": "Data Source=server;Initial Catalog=catalog;User ID=uid;Password=pwd;MultipleActiveResultSets=true"
}
Isso causa um erro quando tento iniciar meu aplicativo; "O processo OpenDebug terminou inesperadamente". Ainda não encontrei nenhum arquivo de log etc. que possa explicar qual é o problema.
Sei que este aplicativo funciona corretamente quando configuro a variável de ambiente e inicio meu aplicativo a partir do prompt de comando padrão. O aplicativo também funciona conforme o esperado se eu comentar minha variável no arquivo launch.json; Simplesmente não consigo me conectar ao banco de dados.
Presumo que estou usando o formato errado no arquivo launch.json, mas ainda não encontrei nenhuma maneira de fazer isso funcionar.
Alguma ideia?
fonte
Property env is not allowd in launch.json
env
foi renomeado paraenvironment
nas versões atuais do VSCode, a sintaxe também foi alterada. Veja a postagem do @Gabriel abaixo.isso está funcionando
apenas adicione o seguinte
"env": {"NODE_ENV": "desenvolvimento"}
"configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", //TODO: cmd as launch program "skipFiles": [ "<node_internals>/**" ], "program": "${workspaceFolder}\\index.js", "env": { "NODE_ENV": "development" } } ]
fonte
Assim, no seu sistema operacional:
"osx": { "MIMode": "lldb", "environment": [{"name": "DYLD_LIBRATY_PATH", "value": "/Users/x/boost_1_63_0/stage/lib/"}] },
fonte
cppdbg
no meu caso)Desde o final de 2016, você também pode usar o
envFile
para projetos Node.js :Veja também: Carregar variáveis de ambiente de arquivo externo (nó) :
Para projetos Asp.Net Core , esse recurso não é suportado nativamente pelo vscode, mas foi recentemente adicionado à extensão omnisharp vscode. Este recurso está disponível desde 10 de setembro de 2018 via v1.16.0 .
fonte
"args": ["-p", "${SERVER_PORT}"]
junto com"envFile": "${workspaceFolder}/.env"
, mas parece"${SERVER_PORT}"
que não funcionaEu tive o mesmo problema e descobri que tinha um
.env
arquivo na raiz do meu projeto que estava substituindo aslaunch.json
configurações. VOCÊ ESTÁ AVISADO. :)fonte
Para referência, me deparei com um problema semelhante (em 2020, muito depois que o bug mencionado na resposta aceita acima foi corrigido) para um idioma diferente e gostaria de apontar algo:
De acordo com a documentação da Microsoft sobre configurações de inicialização, muitas opções comuns, incluindo recursos
"env"
não exigidos para todos os diferentes ambientes de depuração / execução - isto é, parece-me que não é o VS Code que 'fornece' a opção para variáveis de ambiente, mas sim, a escolha da extensão do depurador específica para implementar este recurso. Portanto, qualquer umProperty "env" is not allowed
pode ocorrer porque o idioma / depurador específico que você está usando não oferece suporte ou não implementou o tratamento de variáveis de ambiente.
Como qbiq disse, provavelmente uma solução rápida para isso, se as variáveis de ambiente não mudarem entre as inicializações, seria exportá-las e executar o VS Code com este conjunto específico de variáveis.
fonte
Versão 1.49.1
Você pode adicionar variáveis env usando a
env
propriedade em seu arquivo launch.json ou usando aenvFile
propriedade com o valor sendo a localização de seu arquivo .env.exemplo env:
{ ... "env": { "PORT": "4000" } ... }
Exemplo de envFile:
{ ... "envFile": "${workspaceFolder}/server/.env", ... }
fonte
como solução alternativa, você pode definir variáveis de ambiente ao iniciar o VSCode, por exemplo, usando este pequeno script do 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"
Salve-o como
vscode.ps1
e chame-o da linha de comando, assim:powershell ".\vscode.ps1 -vars @{ 'NODE_ENV'='test'; 'SOMETHING'='else' }"
fonte
Em junho de 2020, isso ainda era muito enganoso e quebrado no OSX Catalina 10.15.5. Estou usando insiders VSCode com a extensão CodeLLDB versão 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
Ao iniciar o depurador com a
env
palavra-chave emlaunch.json
, recebo o seguinte:Portanto, em poucas palavras, usar a
"env"
diretiva emlaunch.json
mostrará a mensagem na imagem. Isso impedirá a execução do depurador, recurso surpreendente em falta, mas justo o suficiente.Mas então, usando em
environment
vez deenv
, não há mensagem de erro aparecendo, mas as variáveis de ambiente não estão disponíveis no tempo de execução sendo depurado, portantogetenv(whatever)
, não retorna o valor real para aquela chave: -!fonte