[json] VSCode에서 launch.json에 환경 변수를 추가하는 방법

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 파일에서 잘못된 형식을 사용하고 있다고 가정하고 있지만 아직이 작업을 수행 할 방법을 찾지 못했습니다.

어떤 아이디어?



답변

Windows (및 Linux)에서 환경 변수에 문제가있는 것 같습니다. OS X에서 작동합니다. 조사 중입니다. 곧 수정 될 것으로 예상됩니다.

업데이트 (2015 년 6 월 2 일) : Visual Studio Code 0.3.0에는 이에 대한 수정 사항이 포함되어 있습니다.


답변

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


답변

이것은 효과가있다

여기에 이미지 설명 입력

다음을 추가하십시오

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


답변

이와 같이 OS에서 :

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


답변

2016 년 말부터 envFile Node.js 프로젝트 에도 사용할 수 있습니다 .

VS Code Node 디버거는 이제 파일에서 환경 변수를로드하고이를 노드 런타임에 전달하도록 지원합니다. https://github.com/Microsoft/vscode/issues/15964

참조 : 외부 파일 (노드)에서 환경 변수로드 :

이 기능을 사용하려면 시작 구성에 envFile 속성을 추가하고 환경 변수가 포함 된 파일의 절대 경로를 지정합니다.

Asp.Net Core 프로젝트 의 경우이 기능 vscode에서 기본적으로 지원되지 않지만 최근 omnisharp vscode 확장에 추가되었습니다. 이 기능은 2018 년 9 월 10 일부터 v1.16.0을 통해 사용할 수 있습니다 .


답변

나는 똑같은 문제가 있었고 .env내 프로젝트 루트에 launch.json설정 을 재정의 하는 파일 이 있음이 밝혀졌습니다 . 경고를 받았습니다. 🙂


답변

참고로, 다른 언어에 대해 비슷한 문제 (2020 년, 위의 답변에 언급 된 버그가 수정 된 지 오래됨)를 발견했으며 무언가를 지적하고 싶습니다.

에 accoding의 마이크로 소프트의 문서 , 발사 구성, 많은 일반적인 옵션에 포함 "env"되지 않습니다 requried , 환경 변수에 대한 옵션을 ‘제공한다’고 VS 코드 아니라고 보인다,라고하는 것입니다 – 모든 다른 디버깅 / 실행 환경을위한 기능을 오히려이 기능을 구현하기위한 특정 디버거 확장의 선택입니다. 따라서

  • 디버깅 응용 프로그램의 예기치 않은 충돌
  • 경고 Property "env" is not allowed

사용중인 특정 언어 / 디버거가 환경 변수 처리를 지원하지 않거나 구현하지 않았기 때문에 발생할 수 있습니다.

qbiq가 말했듯이 환경 변수가 실행 중에 변경되지 않는 경우 이에 대한 빠른 해결 방법은 해당 변수를 내보내고 특정 변수 세트로 VS 코드를 실행하는 것입니다.