Praca z nowym edytorem VSCode w projekcie node.js. Próbuję skonfigurować mój profil „Launch” do debugowania, edytując plik launch.json. Muszę skonfigurować ciąg połączenia jako zmienną środowiskową. Zgodnie z komentarzami w pliku launch.json:
// Environment variables passed to the program.
"env": { }
Próbowałem dodać moją zmienną środowiskową w następujący sposób:
"env":
{
"CONNECTION_STRING": "Data Source=server;Initial Catalog=catalog;User ID=uid;Password=pwd;MultipleActiveResultSets=true"
}
Powoduje to błąd podczas próby uruchomienia mojej aplikacji; „Proces OpenDebug został nieoczekiwanie zakończony”. Nie znalazłem jeszcze żadnych plików dziennika itp., Które mogłyby wyjaśnić, na czym polega problem.
Wiem, że ta aplikacja działa poprawnie, gdy konfiguruję zmienną środowiskową i uruchamiam aplikację ze standardowego wiersza polecenia. Aplikacja działa również zgodnie z oczekiwaniami, jeśli skomentuję moją zmienną w pliku launch.json; Po prostu nie mogę połączyć się z bazą danych.
Zakładam, że używam niewłaściwego formatu w pliku launch.json, ale nie znalazłem jeszcze żadnego sposobu, aby to zadziałało.
Jakieś pomysły?
źródło
Property env is not allowd in launch.json
env
został zmieniony naenvironment
w obecnych wersjach VSCode, składnia również uległa zmianie. Zobacz post @Gabriel poniżej.to działa
po prostu dodaj następujące elementy
"env": {"NODE_ENV": "rozwój"}
"configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", //TODO: cmd as launch program "skipFiles": [ "<node_internals>/**" ], "program": "${workspaceFolder}\\index.js", "env": { "NODE_ENV": "development" } } ]
źródło
W ten sposób pod twoim systemem operacyjnym:
"osx": { "MIMode": "lldb", "environment": [{"name": "DYLD_LIBRATY_PATH", "value": "/Users/x/boost_1_63_0/stage/lib/"}] },
źródło
cppdbg
w moim przypadku)Od końca 2016 r. Możesz również korzystać z
envFile
projektów Node.js :Zobacz także: Ładowanie zmiennych środowiskowych z pliku zewnętrznego (węzła) :
W przypadku projektów Asp.Net Core ta funkcja nie jest obsługiwana natywnie przez Vscode, ale została niedawno dodana do rozszerzenia Omnisharp vscode. Ta funkcja jest dostępna od 10 września 2018 r . W wersji 1.16.0 .
źródło
"args": ["-p", "${SERVER_PORT}"]
wraz z"envFile": "${workspaceFolder}/.env"
, ale wygląda jak"${SERVER_PORT}"
nie działaMiałem ten sam problem i okazuje się, że miałem
.env
plik w katalogu głównym projektu, który przesłaniałlaunch.json
ustawienia. JESTEŚ OSTRZEŻONY. :)źródło
Dla porównania natknąłem się na podobny problem (w 2020 roku, długo po naprawieniu błędu wymienionego w zaakceptowanej odpowiedzi powyżej) dla innego języka i chciałbym coś wskazać:
Accoding do dokumentacji Microsoftu na konfiguracje startowe, wiele opcji wspólnych, w tym
"env"
nie są wymagane na możliwości dla wszystkich różnych debugowania / run środowiskach - to znaczy, wydaje mi się, że to nie jest kod VS że „zapewnia” opcję dla zmiennych środowiskowych, ale raczej wybór konkretnego rozszerzenia debuggera w celu zaimplementowania tej funkcji. Dlatego teżProperty "env" is not allowed
może wystąpić, ponieważ konkretny język / debugger, którego używasz, nie obsługuje lub nie ma zaimplementowanej obsługi zmiennych środowiskowych.
Jak powiedział qbiq, prawdopodobnie szybkim obejściem tego problemu, jeśli zmienne środowiskowe nie mają się zmieniać w kolejnych uruchomieniach, byłoby ich wyeksportowanie i uruchomienie VS Code z tym określonym zestawem zmiennych.
źródło
Wersja 1.49.1
Możesz dodać zmienne env, używając
env
właściwości w pliku launch.json lub używającenvFile
właściwości, której wartością jest lokalizacja pliku .env.przykład env:
{ ... "env": { "PORT": "4000" } ... }
Przykład pliku env:
{ ... "envFile": "${workspaceFolder}/server/.env", ... }
źródło
aby obejść ten problem, możesz ustawić zmienne środowiskowe podczas uruchamiania VSCode, na przykład za pomocą tego małego skryptu 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"
Zapisz go jako
vscode.ps1
i wywołaj z linii poleceń, na przykład:powershell ".\vscode.ps1 -vars @{ 'NODE_ENV'='test'; 'SOMETHING'='else' }"
źródło
W czerwcu 2020 r. Jest to nadal bardzo mylące i zepsute na OSX Catalina 10.15.5. Używam insiderów VSCode z rozszerzeniem CodeLLDB w wersji 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
Po uruchomieniu debuggera ze
env
słowem kluczowym nalaunch.json
otrzymuję to:Krótko mówiąc, użycie
"env"
dyrektywy inlaunch.json
spowoduje wyświetlenie komunikatu na zrzucie ekranu. Zapobiegnie to uruchomieniu debugera, zaskakującego braku funkcji, ale wystarczająco sprawiedliwego.Ale potem, używając
environment
zamiastenv
, nie pojawia się żaden komunikat o błędzie, ale zmienne środowiskowe nie są dostępne w debugowanym środowisku wykonawczym, więcgetenv(whatever)
nie zwraca rzeczywistej wartości dla tego klucza: -!źródło