मैं VSCode में launch.json के लिए पर्यावरण चर कैसे जोड़ूं


87

नोड.जेएस परियोजना पर नए VSCode संपादक के साथ काम करना। मैं लॉन्च के लिए डिबगिंग के लिए अपने "लॉन्च" प्रोफ़ाइल को कॉन्फ़िगर करने का प्रयास कर रहा हूं। फ़ाइल को संपादित करके। मुझे एक पर्यावरण चर के रूप में एक कनेक्शनस्टैंडिंग सेटअप करने की आवश्यकता है। लॉन्च.जॉन फ़ाइल में टिप्पणियों के अनुसार:

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

मैंने अपना पर्यावरण चर जैसे जोड़ने की कोशिश की है:

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

जब मैं अपना ऐप लॉन्च करने का प्रयास करता हूं तो यह एक त्रुटि का कारण बनता है; "ओपनडेबग प्रक्रिया ने अप्रत्याशित रूप से समाप्त कर दिया है"। मुझे अभी तक कोई लॉग फ़ाइल नहीं मिली है, आदि जो बता सकते हैं कि समस्या क्या है।

मुझे पता है कि यह ऐप सही तरीके से काम करता है जब मैं पर्यावरण चर को सेटअप करता हूं और मानक कमांड प्रॉम्प्ट से अपना ऐप लॉन्च करता हूं। एप्लिकेशन भी अपेक्षित रूप से चलता है यदि मैं लॉन्च में अपने वैरिएबल पर टिप्पणी करता हूं। जेसन फ़ाइल; मैं सिर्फ डेटाबेस से कनेक्ट नहीं कर सकता।

मैं मान रहा हूं कि मैं लॉन्च.जॉन फ़ाइल में गलत प्रारूप का उपयोग कर रहा हूं, लेकिन मुझे अभी तक इस काम को करने का कोई तरीका नहीं मिला है।

कोई विचार?

जवाबों:


22

विंडोज पर पर्यावरण चर के साथ एक समस्या लगती है (और शायद लिनक्स पर)। यह OS X पर काम करता है। हम जांच कर रहे हैं। जल्द ही ठीक होने की उम्मीद है।

अपडेट (2 जून, 2015): विजुअल स्टूडियो कोड 0.3.0 में इसके लिए एक फिक्स है।


92

मैं envसंपत्ति का उपयोग करके उन्हें सफलतापूर्वक पास कर रहा हूं 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
मैं मिल गयाProperty env is not allowd in launch.json
अब

2
envenvironmentVSCode के वर्तमान संस्करणों में इसका नाम बदल दिया गया है , वाक्यविन्यास भी बदल गया है। नीचे @Gabriel की पोस्ट देखें।
शाम

14

यह काम कर रहा है

यहां छवि विवरण दर्ज करें

बस निम्नलिखित जोड़ें

"env": {"NODE_ENV": "विकास"}

"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
मूल प्रश्न के बाद से वीएस कोड टास्क रनर के सभी परिवर्तनों के साथ इस उत्तर को सूची में ऊपर जाना चाहिए, यह सही है और यह काम करता है!
ट्रेवर

12

इस तरह, अपने ओएस के तहत:

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

यह मेरे लिनक्स पर भी काम करता है, लेकिन मुझे लगता है कि यह दृढ़ता से डिबगर के प्रकार ( cppdbgमेरे मामले में) से भी संबंधित है
एमफैसिस

अब एक सूची में शब्दकोश क्यों है?
सीस टिमरमैन

@CeesTimmerman, यह इतना है कि आप कई पर्यावरण चर हो सकते हैं ... प्रत्येक एक नाम और मूल्य का एक शब्दकोश। एक बिट क्रिया लेकिन यह 'नाम' और 'पथ' के ऑटो-पूर्ण के लिए अनुमति देता है।
रॉबर्ट लैग

10

2016 के अंत से आप envFile Node.js परियोजनाओं के लिए भी उपयोग कर सकते हैं :

वीएस कोड नोड डिबगर अब एक फाइल से पर्यावरण चर को लोड करने के लिए समर्थन करता है और उन्हें नोड रनटाइम में पास करता है। https://github.com/Microsoft/vscode/issues/15964

यह भी देखें: बाहरी फ़ाइल (नोड) से पर्यावरण चर लोड करें :

इस सुविधा का उपयोग करने के लिए, अपने लॉन्च कॉन्फ़िगरेशन में एक विशेषता envFile जोड़ें और पर्यावरण चर वाली फ़ाइल के लिए पूर्ण पथ निर्दिष्ट करें:

Asp.Net कोर प्रोजेक्ट्स के लिए , यह सुविधा vscode द्वारा मूल रूप से समर्थित नहीं है , लेकिन इसे हाल ही में omnisharp vscode एक्सटेंशन में जोड़ा गया है। यह सुविधा v1.16.0 के माध्यम से 10 सितंबर, 2018 से उपलब्ध है


यह आसान है लेकिन VSCode लॉन्च कॉन्फ़िगरेशन फ़ाइल के लिए "args" में इन चर का उपयोग कैसे करें? आप "args" निर्दिष्ट कर सकते हैं लेकिन आप वहां पर्यावरण चर का उपयोग नहीं कर सकते हैं (टर्मिनल में आप कर सकते हैं)
जैरी ग्रीन

मैं क्या करना चाहते हैं "args": ["-p", "${SERVER_PORT}"]के साथ "envFile": "${workspaceFolder}/.env"है, लेकिन लगता है जैसे "${SERVER_PORT}"काम नहीं करता है
जेरी ग्रीन

5

मुझे भी यही समस्या थी और यह पता चला कि मेरे पास .envमेरे प्रोजेक्ट रूट में एक फाइल थी जो launch.jsonसेटिंग्स को ओवरराइड कर रही थी । आप बहुत खुश होंगे। :)


3

संदर्भ के लिए, मैं एक समान मुद्दे पर आया था (2020 में, लंबे समय बाद बग को स्वीकार किए गए उत्तर में उल्लिखित किया गया था) एक अलग भाषा के लिए और कुछ इंगित करना चाहेंगे:

करने के लिए accoding माइक्रोसॉफ्ट के प्रलेखन , लांच विन्यास, कई आम विकल्प पर सहित "env"नहीं कर रहे हैं requried सभी विभिन्न डिबगिंग / चलाने वातावरण के लिए सुविधाओं - कहने के लिए है कि, मुझे लगता है कि यह वी.एस. कोड नहीं है कि वातावरण चर के लिए विकल्प 'प्रदान करता है', बल्कि, इस सुविधा को लागू करने के लिए विशिष्ट डीबगर एक्सटेंशन का विकल्प। इसलिए, या तो

  • डिबगिंग एप्लिकेशन का एक अप्रत्याशित क्रैश
  • चेतावनी Property "env" is not allowed

हो सकता है क्योंकि आप जिस विशेष भाषा / डिबगर का उपयोग कर रहे हैं वह पर्यावरण चर का समर्थन नहीं करता है या कार्यान्वित नहीं करता है।

जैसा कि क्यूबिक ने कहा है, शायद इसके लिए एक त्वरित समाधान है यदि लॉन्च के दौरान पर्यावरण चर बदलने नहीं जा रहे हैं तो उन्हें निर्यात करना होगा और वीएस कोड को चर के इस विशिष्ट सेट के साथ चलाना होगा।


3

संस्करण 1.49.1

आप envअपनी लॉन्च में संपत्ति का उपयोग करके env वैरिएबल जोड़ सकते हैं। Json फ़ाइल या अपने .env फ़ाइल envFileके स्थान के मान के साथ संपत्ति का उपयोग करके ।

env उदाहरण:

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

envFile उदाहरण:

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

दोनों अभी भी अजगर के लिए टूट गए हैं
गैरीएम

1

एक वर्कअराउंड के रूप में, आप VSCode शुरू करते समय पर्यावरण चर सेट कर सकते हैं, उदाहरण के लिए, इस छोटी सी पॉवरशेल स्क्रिप्ट का उपयोग करते हुए:

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"

इसे vscode.ps1इस तरह सहेजें और कमांडलाइन से कॉल करें, जैसे:

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

1

जून 2020 पर यह अभी भी बहुत भ्रामक है और OSX कैटालिना 10.15.5 पर टूट गया है। मैं के साथ VSCode के अंदरूनी सूत्रों का उपयोग कर रहा CodeLLDB विस्तार संस्करण 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

जब मुझे यह मिलता है , तो envकीवर्ड के साथ डिबगर लॉन्च करते समय launch.json:

यहां छवि विवरण दर्ज करें

तो संक्षेप में, "env"निर्देश का उपयोग करके launch.jsonस्क्रीनशॉट में संदेश दिखाएगा। यह डिबगर को चलाने से रोकता है, आश्चर्यचकित कमी वाली विशेषता, लेकिन पर्याप्त रूप से उचित है।

लेकिन फिर, के environmentबजाय का उपयोग कर env, कोई त्रुटि संदेश popping है, लेकिन पर्यावरण चर डिबग किया जा रहा रनवे पर उपलब्ध नहीं हैं, तो getenv(whatever)उस कुंजी के लिए वास्तविक मूल्य वापस नहीं करता है: -!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.