VSCodeのlaunch.jsonに環境変数を追加するにはどうすればよいですか?


94

node.jsプロジェクトで新しいVSCodeエディターを操作する。launch.jsonファイルを編集して、デバッグ用に「Launch」プロファイルを構成しようとしています。接続文字列を環境変数として設定する必要があります。launch.jsonファイルのコメントによると:

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

私は次のように環境変数を追加しようとしました:

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

これにより、アプリを起動しようとするとエラーが発生します。「OpenDebugプロセスが予期せず終了しました」。問題の原因となる可能性のあるログファイルなどはまだ見つかりません。

環境変数を設定し、標準のコマンドプロンプトからアプリを起動すると、このアプリが正しく機能することがわかります。launch.jsonファイルで変数をコメントアウトすると、アプリも期待どおりに実行されます。データベースに接続できません。

launch.jsonファイルで間違った形式を使用していると想定していますが、これを機能させる方法はまだ見つかりません。

何か案は?

回答:


22

Windows(およびおそらくLinux)の環境変数に問題があるようです。OSXでも動作します。調査中です。すぐに修正される予定です。

更新(2015年6月2日): Visual Studio Code0.3.0にはこの修正が含まれています。


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

2
私が得たProperty env is not allowd in launch.json
nowox

2
env改名されましたenvironmentVSCodeの現在のバージョンでは、構文も変更されます。以下の@Gabrielの投稿を参照してください。
ブリトー

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

2
元の質問以降、VS Codeタスクランナーにすべての変更が加えられたため、この回答はリストの上位に移動するはずです。これは正しく、機能します。
トレバー

13

このように、あなたのOSの下で:

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

これはLinuxでも機能しますが、デバッガーのタイプ(cppdbg私の場合)にも強く関連していると思います
Amfasis

なぜ辞書がリストにあるのですか?
CeesTimmerman20年

@CeesTimmerman、それはあなたが複数の環境変数を持つことができるようにするためです...それぞれが名前と値の辞書です。少し冗長ですが、「名前」と「パス」のオートコンプリートが可能です。
ロバートラグ

12

2016年後半以降、envFile Node.jsプロジェクトにも使用できます

VS Code Nodeデバッガーは、ファイルから環境変数をロードし、それらをノードランタイムに渡すことをサポートするようになりました。https://github.com/Microsoft/vscode/issues/15964

参照:外部ファイル(ノード)から環境変数をロードする

この機能を使用するには、起動構成に属性envFileを追加し、環境変数を含むファイルへの絶対パスを指定します。

Asp.Net Coreプロジェクトの場合、この機能vscodeでネイティブにサポートされていません、最近omn​​isharpvscode拡張機能に追加されました。この機能は、2018年9月10日からv1.16.0経由で利用できます。


これは便利ですが、VSCode Launch構成ファイルの「args」でこれらの変数を使用するにはどうすればよいですか?あなたは、「引数」を指定することができますが、(あなたは、端末にすることができます)は、環境変数を使用することはできません
ジェリー・グリーン

私がやりたい"args": ["-p", "${SERVER_PORT}"]と一緒に"envFile": "${workspaceFolder}/.env"、しかし、のようなルックスは"${SERVER_PORT}"動作しません
ジェリー・グリーン

7

これと同じ問題が発生.envし、プロジェクトルートにlaunch.json設定を上書きするファイルがあったことが判明しました。あなたは警告されました。:)


3

参考までに、私は別の言語で同様の問題に遭遇し(2020年、上記の受け入れられた回答で言及されたバグが修正されてからずっと後)、何かを指摘したいと思います。

Accoding Microsoftのドキュメント、起動構成、多くの一般的なオプションに含め"env"ていないrequried、環境変数のオプション「を提供します」というVSコードではないように私には思える、と言うことです-すべての異なるデバッグ/実行環境向けの機能をむしろ、この機能を実装するための特定のデバッガー拡張機能の選択。したがって、どちらか

  • デバッグアプリケーションの予期しないクラッシュ
  • 警告 Property "env" is not allowed

使用している特定の言語/デバッガーが環境変数の処理をサポートしていないか、実装していないために発生する可能性があります。

qbiqが言ったように、環境変数が起動間で変更されない場合、おそらくこれに対する簡単な回避策は、それらをエクスポートし、この特定の変数セットを設定してVSCodeを実行することです。


3

バージョン1.49.1

env変数を追加するにenvは、launch.jsonファイルのenvFileプロパティを使用するか、.envファイルの場所を値としてプロパティを使用します。

環境の例:

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

envFileの例:

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

どちらもまだのpythonのために壊れている
garyM

2

2020年6月でも、これは非常に誤解を招きやすく、OSX Catalina10.15.5では壊れています。CodeLLDB拡張バージョン1.5.3でVSCodeインサイダーを使用しています:

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、ポップアップエラーメッセージはありませんが、環境変数は、デバッグ対象の実行時には利用できないので、getenv(whatever)そのキーの実際の値を返しません: - !


1

回避策として、VSCodeの起動時に、たとえば次の小さな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"

次のvscode.ps1ように、名前を付けて保存し、コマンドラインから呼び出します。

powershell ".\vscode.ps1 -vars @{ 'NODE_ENV'='test'; 'SOMETHING'='else' }"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.