VSCode'da launch.json'a ortam değişkenlerini nasıl eklerim


94

Bir node.js projesinde yeni VSCode düzenleyiciyle çalışma. Launch.json dosyasını düzenleyerek hata ayıklama için "Başlat" profilimi yapılandırmaya çalışıyorum. Ortam değişkeni olarak bir bağlantı dizesi kurmam gerekiyor. Launch.json dosyasındaki yorumlara göre:

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

Ortam değişkenimi şu şekilde eklemeyi denedim:

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

Bu, uygulamamı başlatmaya çalıştığımda bir hataya neden oluyor; "OpenDebug işlemi beklenmedik şekilde sona erdi". Sorunun ne olduğunu açıklayabilecek herhangi bir günlük dosyası vb. Bulamadım.

Ortam değişkenini kurduğumda ve uygulamamı standart komut isteminden başlattığımda bu uygulamanın düzgün çalıştığını biliyorum. Launch.json dosyasında değişkenime yorum yaparsam uygulama da beklendiği gibi çalışır; Veritabanına bağlanamıyorum.

Launch.json dosyasında yanlış formatı kullandığımı varsayıyorum, ancak bu işi yapmak için henüz bir yol bulamadım.

Herhangi bir fikir?

Yanıtlar:


22

Windows'ta (ve muhtemelen Linux'ta) ortam değişkenleriyle ilgili bir sorun var gibi görünüyor. OS X üzerinde çalışıyor. Araştırıyoruz. Yakında bir düzeltme bekleyin.

Güncelleştirme (2 Haziran 2015): Visual Studio Code 0.3.0, bunun için bir düzeltme içerir.


102

envMülkü kullanarak bunları başarıyla geçiriyorum 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    
    }
  ]
}

2
I gotProperty env is not allowd in launch.json
nowox

2
envenvironmentmevcut VSCode sürümlerinde olarak yeniden adlandırıldı , sözdizimi de değiştirildi. Aşağıdaki @Gabriel gönderisine bakın.
burito

15

bu çalışıyor

görüntü açıklamasını buraya girin

sadece aşağıdakileri ekleyin

"env": {"NODE_ENV": "geliştirme"}

"configurations": [
    {
        "type": "node",
        "request": "launch",
        "name": "Launch Program", //TODO: cmd as launch program
        "skipFiles": [
            "<node_internals>/**"
        ],
        "program": "${workspaceFolder}\\index.js",
        "env": {
            "NODE_ENV": "development"
        }
    }
]

2
VS Code görev çalıştırıcısında yapılan tüm değişikliklerle, orijinal sorudan bu yana bu cevap listede yukarı çıkmalı, doğru ve işe yarıyor!
Trevor

13

Bunun gibi, işletim sisteminizde:

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

Bu aynı zamanda Linux'ta da işe yarıyor, ancak aynı zamanda hata ayıklayıcının türüyle de yakından ilişkili olduğunu düşünüyorum ( cppdbgbenim durumumda)
Amfasis

Sözlük neden şimdi bir listede?
Cees Timmerman

@CeesTimmerman, birden fazla ortam değişkenine sahip olabilmeniz içindir ... her biri bir ad ve değer sözlüğü. Biraz ayrıntılı, ancak 'ad' ve 'yol'un otomatik olarak tamamlanmasına izin veriyor.
Robert Lugg

12

2016'nın sonlarından bu yana envFile , Node.js projeleri için de kullanabilirsiniz :

VS Code Node hata ayıklayıcısı artık ortam değişkenlerini bir dosyadan yüklemeyi destekler ve bunları düğüm çalışma zamanına iletir. https://github.com/Microsoft/vscode/issues/15964

Ayrıca bkz: Ortam değişkenlerini harici dosyadan (düğüm) yükleme :

Bu özelliği kullanmak için başlatma yapılandırmanıza bir envFile özniteliği ekleyin ve ortam değişkenlerini içeren dosyanın mutlak yolunu belirtin:

Asp.Net Core projeleri için , bu özellik yerel olarak vscode tarafından desteklenmemektedir ancak yakın zamanda omnisharp vscode uzantısına eklenmiştir. Bu özellik, 10 Eylül 2018 tarihinden itibaren v1.16.0 aracılığıyla kullanılabilir .


Bu kullanışlıdır, ancak bu değişkenler VSCode Launch yapılandırma dosyası için "argümanlarda" nasıl kullanılır? "Args" belirtebilirsiniz, ancak burada ortam değişkenlerini kullanamazsınız (terminalde yapabilirsiniz)
Jerry Green

Yapmak istediğim "args": ["-p", "${SERVER_PORT}"]birlikte "envFile": "${workspaceFolder}/.env", ama görünüyor gibi "${SERVER_PORT}"iş yapmaz
Jerry Green

7

Aynı sorunu yaşadım ve .envproje kökümde launch.jsonayarları geçersiz kılan bir dosyam olduğu ortaya çıktı . UYARILARSINIZ. :)


3

Referans olarak, farklı bir dil için benzer bir sorunla karşılaştım (2020'de, yukarıda kabul edilen cevapta bahsedilen hatanın düzeltilmesinden çok sonra) ve bir şeye dikkat çekmek istiyorum:

Doğrultusunda kapsamınızı Microsoft'un dokümanlarına , fırlatma yapılandırmaları, birçok yaygın seçenekleri dahil "env"değildir requried , bunun çevre değişkenleri için seçenek 'sağlayan' o VS Kod olmadığını bana öyle geliyor, demek ki - tüm farklı ayıklama / çalıştırmak ortamlar için özellikler bunun yerine, bu özelliği uygulamak için belirli hata ayıklayıcı uzantısının seçimi. Bu nedenle, ya

  • Hata ayıklama uygulamasının beklenmedik bir çökmesi
  • uyarı Property "env" is not allowed

, kullandığınız belirli dil / hata ayıklayıcı ortam değişkenlerinin işlenmesini desteklemediği veya uygulamadığı için oluşabilir.

Qbiq'in dediği gibi, ortam değişkenleri başlatmalar arasında değişmeyecekse, bunun için muhtemelen hızlı bir çözüm, onları dışa aktarmak ve bu belirli değişken kümesiyle VS Kodunu çalıştırmak olacaktır.


3

Sürüm 1.49.1

envLaunch.json dosyanızdaki envFileözelliği kullanarak veya .env dosyanızın konumu değerine sahip özelliği kullanarak env değişkenleri ekleyebilirsiniz .

env örneği:

{
  ...
   "env": { "PORT": "4000" }
  ...
}

envFile örneği:

{
  ...
  "envFile": "${workspaceFolder}/server/.env",
  ...
}

Her ikisi de python için hala bozuk
garyM

2

Haziran 2020'de bu, OSX Catalina 10.15.5'te hala çok yanıltıcı ve bozuk. CodeLLDB uzantı sürüm 1.5.3 ile VSCode içerisini kullanıyorum :

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

Hata ayıklayıcıyı envanahtar kelimeyle başlatırken şunu launch.jsonalıyorum:

görüntü açıklamasını buraya girin

Kısacası, "env"direktifin kullanılması launch.jsonekran görüntüsündeki mesajı gösterecektir. Bu, hata ayıklayıcının çalıştırılmasını engelleyecektir, şaşırtıcı özellik eksiktir, ancak yeterince adildir.

Ancak environmentbunun yerine kullanıldığında env, hata mesajı çıkmaz , ancak ortam değişkenleri hata ayıklanan çalışma zamanında kullanılamaz, bu nedenle getenv(whatever)bu anahtar için gerçek değeri döndürmez: -!


1

geçici bir çözüm olarak, örneğin bu küçük powershell betiğini kullanarak VSCode'u başlatırken ortam değişkenlerini ayarlayabilirsiniz:

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"

Farklı kaydedin vscode.ps1ve komut satırından şu şekilde çağırın:

powershell ".\vscode.ps1 -vars @{ 'NODE_ENV'='test'; 'SOMETHING'='else' }"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.