programing

NVM에서 지정한 노드 버전을 사용하기 위한 Visual Studio 코드

newstyles 2023. 8. 7. 22:24

NVM에서 지정한 노드 버전을 사용하기 위한 Visual Studio 코드

VS Code에서 NVM에서 지정한 노드 버전을 사용할 수 있습니까?

6.9.2가 로컬로 설치되어 있습니다.다른 버전으로 전환한 후에도 OS X 터미널(VS Code 터미널이 아님)에서 VS Code를 다시 시작하면 VS Code가 6.9.2를 사용하여 계속 표시됩니다.

OS X 터미널

MacBook-Pro-3:~ mac$ node -v
v7.8.0

VS 코드 터미널

MacBook-Pro-3:QB-Invoice-API mac$ node -v
v6.9.2

VS 코드:

  • 집에 launch.json
  • 을가를 runtimeVersion를 지정합니다.

이 예에서는 4.8.7이 이미 nvm을 사용하여 설치되어 있다고 가정합니다.

{
"version": "<some-version>",
"configurations": [
    {
        "type": "node",
        "runtimeVersion": "4.8.7", // If i need to run node 4.8.7
        "request": "launch",
        "name": "Launch",
        "program": "${workspaceFolder}/sample.js"
    }
]}

은 별칭을 입니다.default에서 -OS 터서실행에 -를 합니다.

nvm alias default 7.8.0

vcode를 하고 있는 vcode를 엽니다. vcode는 다음과 같습니다.node -v아온다를 합니다.7.8.0

는 vcode에서 이 default)하는 것 .nvm use X.X.X

VS 코드를 다시 시작하여 변경 사항을 선택합니다.

더하다runtimeExecutable의 신에게에..vscode/launch.json▁this.

{
  "type": "node",
  "request": "launch",
  "name": "App",
  "program": "${workspaceRoot}/index.js",
  "runtimeExecutable": "${env:HOME}/.nvm/versions/node/v6.9.2/bin/node"
}

제공된 답변 중 일부는 정확하고 업데이트되었지만 다소 불완전합니다.이 절차는 저에게 효과가 있었습니다.

  1. VS Code 내부의 터미널 을 열고 실행합니다.node -v예를 들면 당신은 받을 것입니다.v10.12.0.
  2. VS 코드 외부에 터미널 열기 nvm(즉, nvm)으로 노드 버전을 변경합니다.nvm use v12.14.0)
  3. Cmd+Shift+p환경설정 > 설정 열기(JSON)선택합니다.
  4. 더하다"terminal.integrated.shellArgs.osx": []
  5. Cmd+Shift+p명령을 선택합니다. PATH에 'code' 명령 설치
  6. VS 코드를 닫습니다.
  7. 터널창열실행을 합니다.code새로 업데이트된 VS 코드가 열립니다.bash/zshsession
  8. VS Code 내부의 터미널 을 열고 실행합니다.node -v얻게 될 것입니다.v12.14.0.

보너스: VS Code의 터미널에서 항상 특정 노드 버전을 가져오려면 VS Code 외부에서 터미널 을 열고 다음을 실행하여 기본값으로 설정합니다.

nvm alias default v12.14.0

VSCode뿐 아니라 Atom Editor(Platformio-ide-terminal 패키지를 사용하여 통합 터미널을 관리)를 사용하여 OS X 환경에서 지정된 노드 버전을 nvm으로 유지할 수 없는 동일한 문제가 있었습니다.디버거를 사용하지 않고 특정 작업에 gulp 및 grunt를 사용하는 것 외에 이전 답변의 제안 중 어떤 것도 저에게 효과가 없었습니다.nvm은 적어도 이러한 편집기에서 통합 터미널 또는 하위 셸과 맞지 않습니다. 이는 환경 변수 $PATH가 내부적으로 수정되고 이 문제에서 보고된 이 패키지의 기여자 중 한 명의 의견에 따라 NVM이 중첩된 셸 #1652 내에서 로드되지 않기 때문입니다.

@charsleya 나는 nvm이 왜 이 오류를 던지고 있는지 알고 있습니다.하위 셸에서 PATH의 /usr/local/bin:/usr/bin:/usr/sbin:/sbin 부분이 PATH의 끝에서 시작으로 이동되었습니다.

  • 그런 다음 nvm이 시작되면 nvm_change_path(내 기여로 인해 nvm_prepend_path에서 변경됨)를 호출하여 nvm 관련 경로 부분을 수정합니다.
  • 그런 다음 Nvm은 npm에게 현재 npm 접두사가 무엇인지 물어봄으로써 확인합니다.이제 /usr/local/bin/npm에 우선 순위가 있으므로 /usr/local/bin을 보고합니다.
  • 그런 다음 Nvm은 npm이 보고한 현재 접두사가 현재 nvm 노드 버전의 디렉토리 트리에 있는지 확인합니다(이 단계에서는 기본 nvm 별칭이 확인되는 노드 버전의 설치 디렉토리).
  • 접두사는 해당 트리의 일부가 아니므로 자체적으로 비활성화되고(프로세스에서 nvm_strip_path를 호출하므로 하위 셸의 PATH에 VM 관련 경로가 없음) 오류가 발생합니다. macOS의 /etc/profile(또는 /etc/zprofile)에서 /usr/lixec/path_helper를 호출하여 PATH를 전환합니다.

상위 셸에서 PATH에는 아직 nvmdir가 없으므로 nvm이 실행될 때쯤 디렉토리를 경로에 추가합니다.그러나 하위 셸에서 PATH는 시스템이 아닌 디렉터리를 마지막에 배치하도록 macOS에 의해 재구성되었으며 문제가 발생했습니다."

통합 터미널을 시작할 때 항상 다음과 같은 메시지가 표시되었습니다.

". "/" Run nvm구 npm "prefix" "prefix" "/usr/local" "로 되어 있습니다.npm config delete prefix또는nvm use --delete-prefix vx.x.x --silent그것을 해제하기 위해.

이하기 위해 한의 " 방법"이었는데, 는 제 제 경 이 문 해 해 기 제 해 동 문 제 한 의 일 " 결 법 방 었 " 습 니 다 " 이 분 " 안에 입니다. 이는 제 내부에 다음 줄을 추가하여 경로를 재설정하는 것입니다.~/.bash_profile다른 무엇보다도 맨 위에 있습니다.

PATH="/usr/local/bin:$(getconf PATH)"

그 후 두 편집기에서 통합 터미널을 실행하면 더 이상 경고 메시지가 표시되지 않으며 nvm과 상호 작용하여 노드 버전 간에 문제 없이 쉽게 전환할 수 있습니다.

이 방법이 그다지 도움이 되지 않을 경우를 대비해 또 다른 방법이 있습니다.

나는 oh-my-zsh를 사용하고 있고 그것도 nvm에서 지정한 노드 버전을 사용하지 않았습니다.여기에 게시된 몇 가지 제안을 시도했지만, 이 문제를 해결할 수 있는 유일한 방법은 다음 행을 맨 위에 추가하는 것이었습니다.~/.zshrc

PATH="/usr/local/bin:$(getconf PATH)"

저도 같은 문제가 있었지만 위의 답변은 도움이 되지 않았습니다.

은 분명입히니다값기.shellArgs osx로 설정됩니다.bash▁i를 하는 동안.zsh저는 문제를 해결했습니다.shellArgs사용자 설정에서 빈 배열로:

"terminal.integrated.shellArgs.osx": []

제가 찾은 대안은 nvm을 사용하여 노드를 선택한 후 셸에서 코드를 시작하는 것입니다.

먼저 명령 팔레트를 열고 "경로에 '코드' 설치"를 선택해야 합니다.

enter image description here

그런 다음 터미널을 시작하고 nvm을 통해 노드를 선택한 다음 "코드"를 시작합니다.

enter image description here

여기에는 많은 복잡한 대답들이 있습니다.저의 경우, 노드가 이전에 설치되었기 때문에 이 문제가 발생했습니다.다음 디렉터리를 삭제하여 수정했습니다.

rm -rf /usr/local/bin/npm
rm -rf /usr/local/bin/node

다음 그때달기리를 실행합니다.nvm use defaultVS 코드에서 nvm에서 설치한 노드 버전을 선택합니다.

저도 같은 문제가 있었는데 미래에 다른 사람에게 도움이 될 수 있는 이상한 해결책을 발견했습니다.

설정하지 않을 경우eslint.runtime시스템이 노드를 실행하고 있었습니다.v10.11.0eslint 서버의 경우, 실행하기를 원했습니다.v12.13.0했습니다.nvm.

버전이 v10 노설것을발치견에 의해 했습니다.brew@httpsiga의으로 하지만는 @httpsiga 에 의해 되었습니다.nvm그래서, 저는 제거했습니다.v10.11.0Brew 및 Closed/reopen VS Code 통해제공됩니다를▁brew▁closed됩▁code다및/.이상하게도, eslint는 여전히 v10을 사용하여 시작했다고 보고하고 있었습니다.

나는 나의 변화 없이 셸을 실행하려고 시도했습니다.PATH모든 시작 스크립트에서 노드의 버전이 예상대로 v12를 올바르게 가리켰지만 VS 코드는 여전히 eslint를 위해 v10을 시작합니다.

eslint에서 실행 중인 실행 파일의 경로를 확인하는 방법을 잘 모르며, 통합 터미널을 열면 노드의 예상 버전(v12)에서 모든 것이 정상적으로 작동합니다.

솔루션(나를 위한):

만약 내가 설정한다면,"eslint.runtime": "node"settings.json이제 어떤 버전이든 사용할 것입니다.node가 를를용사여하열었때을활습었니다되화성codeode▁vsc다를 사용하여 때 되었습니다.code .종착역에서그저."node"길이 없습니다.

기본 별칭 설정은 VS Code의 모든 인스턴스를 닫은 후에만 작동했습니다.단순히 창을 다시 로드하는 것만으로는 작동하지 않습니다.nvm ls에서는 기본 별칭 집합을 올바르게 표시하지만 VS 코드를 처음 열 때(모든 창에서) 버전 집합을 계속 사용합니다.

repos 간에 여러 노드 버전이 존재하는 문제도 있습니다. 이것이 바로 nvm이 해결해야 할 문제입니다.결국 나는 내 바닥에 다음을 추가했습니다..zshrc파일 이름:

  [ -s "./.nvmrc" ] && nvm use

기본적으로 새 셸이 시작되면 비어 있지 않은지 확인합니다..nvmrc현재 디렉토리에 존재하며 존재하는 경우 해당 버전을 사용합니다.해당 버전이 설치되어 있지 않으면 설치되었다는 메시지가 표시됩니다.를 한 후nvm install모든 새 터미널 세션에서 올바르게 로드되어야 합니다.

@asiera가 지적한 바와 같이 nvm README에 표시된 디렉토리 변경 시 자동 버전 전환을 사용할 수도 있습니다.프로젝트 터미널은 일반적으로 항상 같은 디렉토리에서 열립니다..nvmrc파일. 따라서 이 솔루션은 조금 더 단순하며 터미널 시작 시에만 실행됩니다.

특히 셸에 대해서는 문제가 없었지만, 다음과 같이 할 수 있습니다.

  • 셸이 제대로 구성되었는지 또는 변경되었는지 확인합니다(vscode 또는 터미널에 다른 셸을 사용할 수 있음).
  • 환경을 확인하고 올바르게 설정되지 않은 경우

vcode 자체에 문제가 있어서 어떤 솔루션도 도움이 되지 않았습니다.그래서 저는 다음과 같은 실행 스크립트를 사용하는 것을 마쳤습니다.

    {
        "type": "node",
        "request": "launch",
        "name": "Launch Program",
        "program": "${workspaceFolder}/server.js",
        "runtimeExecutable": "/bin/bash",
        "runtimeArgs": ["-c", ". ~/.nvm/nvm.sh;nvm run default \"$@\"", "dummy"]
    },

bash에 () "" "bash" "bash"를 합니다.default의해 도 있음). nvm 파일 형식입니다.

참고: "dummy" 매개 변수는 나머지 매개 변수를 올바르게 구문 분석하기 위해 필요합니다.

긴 "dummy": "dummy" "dummy" "dummy" "dummy" "dummy": 셸 는 첫 가 될 변수를 사용합니다.$0), 를 사용 시-c▁the▁flag▁is없▁is▁no▁in▁an▁script음▁there▁readplace고.$0는 잘못인수를 "는 모든 변수를 한밀어넣습니다.그냥 뭐든 될 수 있지만, 분명히 거기에 있을 겁니다.

코드를 호출하기 전에 하위 셸에서 노드 버전을 로컬로 설정하는 것이 잘 작동하는 반면 현재 셸에서 버전을 변경하지 않는 것을 발견했습니다.

$ (nvm use 14; code .)

폴더에 할 수 합니다..precode셸 -

nvm use 14

다음 다에추가에 합니다.~/.bashrc

pre_code(){
    if [ $# == 1 ] &&  [ -f ${1}/.precode ] ; then
        echo "(source ${1}/.precode ;  `which code` ${@})"
        (source ${1}/.precode ; `which code` ${@})
    else
        `which code` ${@}
    fi
}   
alias code='pre_code'

(Run)source ~/.bashrc편집을 적용하기 위해 편집 전에 열린 모든 셸에서.)

그 다음, 필요한 파일을 가정합니다.~/myproject/.precode 코드를 , 코시로 합니다.

$ code ~/myproject

예를 들어, 셸에서 일부 진단 출력이 발생합니다.

source github/myproject/.precode
Now using node v14.15.1 (npm v6.14.8)

터미널 창과 디버거에 올바른 노드 버전이 있는 새 vscode 창을 시작합니다.그러나 시작된 셸에서는 원래 노드 버전이 남아 있습니다.

$ node -v
v12.19.1

저는 제안된 해결책을 모두 시도했지만 아무 것도 작동하지 않았습니다.

/usr/local/bin/node가 어딘가를 가리키고 있었습니다. 특정 nvm 노드 폴더에 심볼 링크를 만들어 문제를 해결했습니다.

ln -s /Users/mad/.nvm/versions/node/v11.1.0/bin/node /usr/local/bin/node

가 저도같문가있고지고, 발것은한견제가은제를것▁have▁i은▁that▁and▁i▁i▁found발한견저▁problem도▁same제,가 있다는 것을 발견했습니다.node에의설된에서 brew그리고.nvm했습니다.node에의설된에서 brew그리고 터미널과 비주얼 스튜디오 코드의 버전은 현재 동일합니다.

기본 노드 버전을 수정할 필요가 없습니다.다음 예제에서는 노드 6이 기본 버전이며 VSCode에서 노드 7을 참조하도록 가정합니다.

# open a terminal instance
nvm use 7
code . # or project folder instead of "."
# when VSCode start, you may use ctrl+` to open the integrated terminal
# then check the node version in the integrated terminal
node -v # should print 7

그렇다면 nvm은 잘 구성되어 있지만 다른 버전의 노드가 계속 사용되고 있습니까?

nvm이 아닌 모든 노드 버전 제거:

  1. brew uninstall --force node 노드가 (시스템 노드가 없어도 됩니다.)
  2. pkg 또는 nvm이 아닌 다른 방법으로 설치된 다른 버전
  3. 다시 로그인합니다.이제 셸이 어떻게 시작되든 nvm을 사용하여 경로를 놓고 싸우는 것은 불가능합니다.

에는 참고 : 업설실/그이드시사용레치를 사용합니다.brew install yarn --without-node

, 만약 이 nvm을 해결책을 : : 추가: 추가: 추가: 추가: 추가로 제안합니다.nvm use

더 는 실행할가 없기 .nvm use다른 프로젝트를 시작할 때마다 터미널 옆에 있는 Vcode를 엽니다.

제 기내꺼입니다..vscode/launch.json파일. 행운을 빌어요!

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "command": "nvm use && yarn start",
            "name": "Launch",
            "request": "launch",
            "type": "node-terminal",
        },
    ]
}

작업 공간별로 솔루션설계하고 작업을 수행할 필요가 없기를 원했습니다(재실행할 필요가 없음).nvm use <version>다음과 같습니다.내가 찾은 해결책:

  1. ..nvmrcnvmReadMe에 명시된 대로 사용할 노드 버전을 이전한 프로젝트 루트의 파일
  2. ~/.zshrc에 자동 활성화 스크립트를 ReadMe에도 추가(bashrc 스크립트도 ReadMe에 있음)

Visual Studio Code NPM 스크립트 실행기의 노드 버전을 설정하려는 경우 프로젝트별로 다음과 같이 작동합니다.따라서 글로벌 설정 없이도nvm채무 불이행

runner"란 "NPM 스립란러너트"에서 합니다.package.json:

Visual Studio Code NPM script runner

단계별

  1. 치배치를 합니다..nvmrc프로젝트의 노드 버전을 포함하는 파일을 프로젝트의 루트 폴더에 저장합니다.

  2. 다음 설명에 따라 자동 환경을 활성화합니다. https://github.com/nvm-sh/nvm#deeper-shell-integration

  3. 코드 열기settings.json쉘을 합니다. ( 고선나셸정다니의합을는는에경호우하그리의나(,s▁(▁and는에▁your다니in경'▁shell▁preferred우▁define,zsh) 자동화 프로필의 경우 로그인대화형 셸(인수)을 정의하는 것이 중요합니다.-l그리고.-i):

    "terminal.integrated.automationProfile.osx": {
        "path": "/bin/zsh",
        "icon": "play",
        "args": ["-l", "-i"],
    },
    "terminal.integrated.profiles.osx": {
        "bash": null,
        "zsh": {
            "path": "/bin/zsh",
            "icon": "star",
        }
    },

결과

새 셸을 열면 NVM이 트리거됩니다(아이콘에 작동 중인 설정이 표시됨).

enter image description here

NPM 스크립트를 실행하면 NVM이 트리거됩니다.

enter image description here

enter image description here

건배!

Shell 더 사용되지 않는 것 VS 의 VS Code Shell에 프로파일을 VS Code의 프로파일을 사용한 업데이트입니다.settings.json:

이것은 그것을 제거합니다.-lterminal 인수를 사용하여 대화형 셸 대 로그인 셸로 변환합니다.

"terminal.integrated.profiles.osx": {
    "zsh (normal - me)": {
        "path": "zsh",
        "args": []
    }
},
"terminal.integrated.defaultProfile.osx": "zsh (normal - me)"

감사합니다! 설명을 위한 답변과 오래된 논쟁을 위한 답변:

나에게 효과가 있는 다음 해결책

  1. 합니다.nvm합니다.nvm install v16.13.1그리고.nvm use v16.13.1.
  2. 현재 중인 을 그런 다중 노의경 이가져로 가져옵니다.which node. 될 입니다. 이것은 이런 것이 될 것입니다./usr/local/nvm/versions/node/v16.13.1/bin/node
  3. 으로 이 경로 이름을 이사으경 용름로이에서 합니다.launch.json옵션으로

그자리의 launch.json

{
    "version": "0.2.0",
    "configurations": [
        {   
            "type": "pwa-node",
      -->   "runtimeExecutable": "/usr/local/nvm/versions/node/v16.13.1/bin/node",
            "request": "launch",
            "args": ["testcode/hunter.js","127.0.0.1:9229"],
            "name": "Launch Program",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${workspaceFolder}/index.js"
        }
    ]
}

이을 nvm 문서따이코조드다추합에 .~/.bashrc,~/.profile또는~/.zshrc이을 즐기고 vcode를 즐기십시오.

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

출처: https://github.com/nvm-sh/nvm#manual-install

저는 그저 다음과 같은 일을 했습니다.

# in a separate terminal (i.e not in VScode teminal)
nvm install <node version>

그러면 VScode 터미널에서:

nvm use <the node version you installed>

만약 이 대답들 중 하나라도 당신에게 효과가 없다면,

노드를 다운로드한 후 압축을 풀어서 이전에 설치한 경우.에 가다usr/local/lib그리고 nodjs라는 이름의 남자가 앉아 있을 것입니다.

그를 쫓아내세요.

그리고 세트nvm alias default원하는 버전으로 다시 이동합니다.그게 다야, 행복하게도.그래도 적어도 나를 위해 일했어요.

모든 솔루션을 시도하지는 않았지만, 저는 nvm 업데이트만 하면 됩니다.

여기에 설치된 내용을 따라 다음을 수행하십시오.bash_profile업데이트되었습니다.

다른 어떤 해결책도 저에게 효과가 없었습니다.

그래서 뛰었습니다.nvm alias default node그리고 이것이 저를 위해 그것을 고쳤습니다.

여기 맨 위에 있는 옵션 중 몇 가지를 시도해 보았지만 작동하지 않았습니다.간단한 해결책을 찾았습니다.VS Code 터미널에서:

  1. 터미널 드롭다운에서 아래쪽 화살표를 클릭합니다.
  2. 기본 셸 선택
  3. '배시'를 선택
  4. ㅠㅠnode -v됩니다.nvm alias default v12.14.0

MAC에서 기본 대화형 셸을 확인합니다.zsh라면 VS Code에서도 단말기를 zsh 모드로 설정하는 것은 어떻습니까?그런 다음 Mac에서 지정된 노드 버전을 사용할 수 있습니다.이것은 나에게 효과가 있습니다.

  • 저는 macOS Big Surv11.2.1 + VS Code v1.55.1을 사용하고 있습니다.

그림 설정하기

sudo rm -rf /usr/local/opt/node@<YOUR_NODE_VERSION>

그런 다음 Visual Code를 다시 시작합니다.

언급URL : https://stackoverflow.com/questions/44700432/visual-studio-code-to-use-node-version-specified-by-nvm