কীভাবে আমি ভিএসকোডে প্রবর্তন.জসনে পরিবেশের পরিবর্তনগুলি যুক্ত করব


94

একটি নোড.জেএস প্রকল্পে নতুন ভিএসকোড সম্পাদকের সাথে কাজ করা। আমি প্রবর্তন.জসন ফাইলটি সম্পাদনা করে ডিবাগিংয়ের জন্য আমার "লঞ্চ" প্রোফাইলটি কনফিগার করার চেষ্টা করছি। পরিবেশের পরিবর্তনশীল হিসাবে আমার একটি সংযোগের সেটআপ করা দরকার to লঞ্চ.জসন ফাইলে দেওয়া মন্তব্য অনুসারে:

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

আমি আমার পরিবেশের পরিবর্তনশীলকে এভাবে যুক্ত করার চেষ্টা করেছি:

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

আমি যখন আমার অ্যাপ্লিকেশন চালু করার চেষ্টা করি তখন এটি একটি ত্রুটি ঘটায়; "ওপেনডিবগ প্রক্রিয়াটি অপ্রত্যাশিতভাবে শেষ হয়েছে"। আমি এখনও কোনও লগ ফাইল ইত্যাদির সন্ধান পাইনি যা সমস্যাটি কী তা ব্যাখ্যা করতে পারে।

আমি জানি আমি যখন অ্যাপ্লিকেশনটি পরিবেশের পরিবর্তনশীল সেটআপ করি এবং স্ট্যান্ডার্ড কমান্ড প্রম্পট থেকে আমার অ্যাপ্লিকেশন চালু করি তখন এই অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করে। লঞ্চ.জসন ফাইলে আমার পরিবর্তনশীলটি মন্তব্য করা হলে অ্যাপটিও প্রত্যাশার মতো চলে; আমি কেবল ডাটাবেসের সাথে সংযোগ করতে পারি না।

আমি ধরে নিচ্ছি যে আমি প্রবর্তন.জসন ফাইলটিতে ভুল ফর্ম্যাটটি ব্যবহার করছি, তবে আমি এখনও এই কাজটি করার কোনও উপায় খুঁজে পাইনি।

কোন ধারনা?

উত্তর:


22

উইন্ডোজ (এবং সম্ভবত লিনাক্সে) এনভায়রনমেন্ট ভেরিয়েবলগুলির সাথে একটি সমস্যা রয়েছে বলে মনে হচ্ছে। এটি ওএস এক্সে কাজ করে We আমরা তদন্ত করছি। শীঘ্রই একটি স্থির প্রত্যাশা।

আপডেট (২ জুন, ২০১৫): ভিজ্যুয়াল স্টুডিও কোড ০.০.০ এ এর ​​জন্য একটি সমাধান রয়েছে।


102

আমি 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    
    }
  ]
}

4
আমি পেয়েছিProperty env is not allowd in launch.json
এখন

4
envenvironmentভিএসকোডের বর্তমান সংস্করণগুলিতে নতুন নামকরণ করা হয়েছে , বাক্য গঠনটিও পরিবর্তন করা হয়েছে। নীচে @ গ্যাব্রিয়েলের পোস্টটি দেখুন।
বুড়িটো

15

এটি কাজ করছে

এখানে চিত্র বর্ণনা লিখুন

শুধু নিম্নলিখিত যোগ করুন

"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"
        }
    }
]

4
মূল প্রশ্নটি থেকে ভিএস কোড টাস্ক রানার সমস্ত পরিবর্তনের সাথে এই উত্তরটি তালিকার উপরে চলে যাওয়া উচিত, এটি ঠিক এবং এটি কার্যকর!
ট্রেভর

13

আপনার ওএসের নীচে এটি পছন্দ করুন:

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

এটি আমার লিনাক্সেও কাজ করে, তবে আমি মনে করি এটি ডিবাগারের ধরণের ( cppdbgআমার ক্ষেত্রে) এর
সাথেও দৃ strongly়ভাবে সম্পর্কিত

অভিধান এখন তালিকায় কেন?
সিইস টিমারম্যান 4'20

@ চিজটিম্মারম্যান, এটি তাই আপনার একাধিক পরিবেশের ভেরিয়েবল থাকতে পারে ... প্রতিটি নাম এবং মানের একটি অভিধান। কিছুটা ভার্বোস তবে এটি 'নাম' এবং 'পথ' স্বয়ংক্রিয়ভাবে পূর্ণ করার অনুমতি দেয়।
রবার্ট লগ

12

২০১ late সালের শেষের দিকে আপনি envFile নোড.জেএস প্রকল্পগুলির জন্যও ব্যবহার করতে পারেন :

ভিএস কোড নোড ডিবাগার এখন একটি ফাইল থেকে পরিবেশের ভেরিয়েবলগুলি লোড করতে সহায়তা করে এবং সেগুলি নোড রানটাইমের হাতে দেয় to https://github.com/Mic Microsoft/vscode/issues/15964

আরও দেখুন: বাহ্যিক ফাইল (নোড) থেকে পরিবেশের ভেরিয়েবলগুলি লোড করুন :

এই বৈশিষ্ট্যটি ব্যবহার করতে, আপনার প্রবর্তন কনফিগারেশনে এনবিএফিলি একটি বৈশিষ্ট্য যুক্ত করুন এবং পরিবেশের ভেরিয়েবলগুলি যুক্ত ফাইলটিতে পরম পথটি নির্দিষ্ট করুন:

Asp.Net কোর প্রকল্পগুলির জন্য , এই বৈশিষ্ট্যটি স্থানীয়ভাবে vscode দ্বারা সমর্থিত নয় তবে এটি সম্প্রতি ওমনিশার্প vscode এক্সটেনশনে যুক্ত করা হয়েছে। এই বৈশিষ্ট্যটি v1.16.0 এর মাধ্যমে 10 সেপ্টেম্বর, 2018 থেকে উপলব্ধ ।


এটি সুবিধাজনক তবে ভিএসকোড লঞ্চ কনফিগার ফাইলের জন্য "আরগস" এ এই পরিবর্তনগুলি কীভাবে ব্যবহার করবেন? আপনি "আরগস" নির্দিষ্ট করতে পারেন তবে আপনি সেখানে পরিবেশের ভেরিয়েবলগুলি ব্যবহার করতে পারবেন না (টার্মিনালে আপনি পারেন)
জেরি গ্রিন

আমি "args": ["-p", "${SERVER_PORT}"]পাশাপাশি করতে চাই "envFile": "${workspaceFolder}/.env", তবে দেখে মনে হচ্ছে "${SERVER_PORT}"এটি কাজ করে না
জেরি গ্রিন

7

আমারও একই সমস্যা ছিল এবং এটি .envআমার প্রোজেক্ট রুটে আমার কাছে একটি ফাইল ছিল যা launch.jsonসেটিংসকে ওভাররাইড করে । আপনি সতর্ক হন :)


3

রেফারেন্সের জন্য, আমি একই ভাষার (2020 সালে, উপরের স্বীকৃত উত্তরে উল্লিখিত বাগটি ঠিক হওয়ার অনেক পরে) ভিন্ন ভাষার জন্য এসেছি এবং কিছু উল্লেখ করতে চাই:

থেকে accoding Microsoft এর ডকুমেন্টেশন লঞ্চ কনফিগারেশনের, অনেক সাধারণ অপশন সহ "env"নেই requried সব বিভিন্ন ডিবাগিং / চালানোর পরিবেশের জন্য বৈশিষ্ট্য - বলতে হয় যে, এটা আমার মনে হচ্ছে যে এটা বনাম কোড নয় যে পরিবেশের জন্য বিকল্প 'প্রদান করে', বরং এই বৈশিষ্ট্যটি বাস্তবায়নের জন্য নির্দিষ্ট ডিবাগার এক্সটেনশনের পছন্দ। সুতরাং, হয়

  • ডিবাগিং অ্যাপ্লিকেশনটির একটি অপ্রত্যাশিত ক্রাশ
  • সতর্কবার্তা Property "env" is not allowed

ঘটতে পারে কারণ আপনি যে বিশেষ ভাষা / ডিবাগারটি ব্যবহার করছেন তা পরিবেশের ভেরিয়েবলগুলি পরিচালনা বা সমর্থন করে না।

যেমন কিউবিআইকি বলেছেন, সম্ভবত পরিবেশের ভেরিয়েবলগুলি লঞ্চগুলিতে পরিবর্তন করতে না পারলে এটি রফতানি করা এবং এই নির্দিষ্ট ভেরিয়েবলের সেটটি সহ ভিএস কোড চালানো হবে এর জন্য একটি দ্রুত কাজ করতে পারে।


3

সংস্করণ 1.49.1

আপনি envআপনার প্রবর্তন.জসন ফাইলটিতে সম্পত্তি ব্যবহার করে বা ব্যবহার করে এনভির ভেরিয়েবল যুক্ত করতে পারেনenvFile সম্পত্তি অবস্থান হিসাবে মানটি ।

উদাহরণস্বরূপ:

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

envFile উদাহরণ:

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


2

জুন 2020 এ এটি এখনও খুব বিভ্রান্তিমূলক এবং ওএসএক্স ক্যাটালিনা 10.15.5 এ বিভক্ত। আমি কোডএলএলডিবি এক্সটেনশন সংস্করণ 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 স্ক্রিনশট বার্তা প্রদর্শন করা হবে। এটি ডিবাগারটি চালানো, আশ্চর্যজনক বৈশিষ্ট্যের অভাব বোধ করবে তবে যথেষ্ট যথেষ্ট fair

কিন্তু তারপর ব্যবহার environmentপরিবর্তে env, কোন ত্রুটি বার্তা পপিং আপ এর কিন্তু বিভিন্ন পরিবেশের debugged হচ্ছে রানটাইম উপলব্ধ নয়, তাই getenv(whatever)যে কী জন্য প্রকৃত মান ফিরিয়ে দেয় না: -


1

কার্যকারণ হিসাবে, আপনি ভিএসকোড শুরু করার সময় পরিবেশ পরিবর্তনশীল সেট করতে পারেন, উদাহরণস্বরূপ, এই সামান্য পাওয়ারশেল স্ক্রিপ্টটি ব্যবহার করে:

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' }"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.