nvm은 새 터미널 세션에서 "잊어 버린"노드를 유지합니다


546

OS X에서 새 터미널 세션을 사용 nvm하면 노드 버전을 잊어 버리고 기본값은 아무것도 없습니다.

$ nvm ls:

         .nvm
     v0.11.12
     v0.11.13

nvm use v.0.11.13모든 세션에서 계속 타격 을 가해 야합니다.

         .nvm
     v0.11.12
->   v0.11.13

brew공식 설치 스크립트뿐만 아니라 설치를 모두 시도했습니다 .

.profile추출 버전에 대한 내 :

#nvm
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

그리고 install.sh 스크립트의 경우 :

$ curl https://raw.githubusercontent.com/creationix/nvm/v0.10.0/install.sh | bash

#nvm
export NVM_DIR="/Users/farhad/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

내가 잘못하고있는 것에 대한 단서가 있습니까?


1
여기에이 내용을 추가하고 싶을 경우-수출 국가 .bash_profile와 수출 국가가 아닌지 확인하십시오.bashrc
James111

답변:


1181

시도하십시오 nvm alias default. 예를 들면 다음과 같습니다.

$ nvm alias default 0.12.7

쉘에서 기본 노드 버전을 설정합니다. 그런 다음 쉘 창을 닫고 새 창을 열어 변경 사항이 지속되는지 확인한 후 다음을 수행하십시오. node --version


11
이것은 이미 nvm을 사용하지 않습니까? $ nvm alias default 0.11.13그리고 후에 $ nvm use 0.11.12, 나는 얻는다 node --version = 0.11.12. 여전히 새 세션에서 노드가 다시 사라집니다. 데비안에서는이 문제가 전혀 없습니다.
frhd

4
좋아, 나는 오타가 있었다 : nvm alias defaul X. 올바른 사용법으로 실제로 작동합니다. 따라서 워크 플로는 nvm install X다음 nvm alias default X과 같습니다. 도와 주셔서 감사합니다!
frhd

21
나는 같은 문제가 있었고 NVM_DIR이후를 내보내고 있었기 때문이었다 nvm.sh. NVM_DIR이전 을 내 보내야합니다 .
maxwell2022

11
참고 nvm alias default단지 모든 새로운 것들에 대한, 현재 환경의 노드 버전을 설정하지 않습니다.
ericsoco

28
즉,하지 작업을 수행하는 경우에 확인하여 .bash_profile(또는 .bashrc또는 무엇이든) 당신이 수정 아무것도하지 않는 PATHsource xx/nvm.sh
goodmanship

85

에 별칭 node자체는 나중에 노드 버전 업데이트와 함께 기본 별칭을 업데이트 방지 할 수 있습니다.

nvm alias default node

2
! 경고 : 'node'버전이 없습니다. 기본-> 노드 (-> N / A)?
House3272

6
무엇에 대해 node alias default stable?
Pierre Henry

1
stable더 이상 사용하고 싶지 않다고 생각합니다 . nvm 문서에서 : "안정적 :이 별명은 더 이상 사용되지 않으며 노드 v0.12 이하에만 적용됩니다. 현재 이것은 노드의 별명입니다."
pherris

1
node이 기본값은 어느 것 입니까? 현재 쉘에서 NVM에 의해 설치 및 사용되는 노드 또는 노드의 설치 패키지 또는 Homebrew 등에 의해 시스템에 설치 될 수있는 노드는 무엇입니까?
2540625

7
(nvm maintenanceer here) node(그리고 stablesemver에서 릴리스 된 모든 것은 안정적이므로 이제 쓸모없는 단어입니다)는 사용 가능한 최신 버전을 사용합니다. 로컬 명령의 경우 최신 설치; 원격 명령의 경우 최신 버전이 제공됩니다.
LJHarb

40

최신 안정 버전을 설치하려면

nvm install stable

특정 버전이 아닌 안정적인 버전으로 기본값을 설정하려면

nvm alias default stable

설치된 버전을 나열하려면 다음을 수행하십시오.

nvm list

현재 v6.2.0다음과 같이 보입니다.

$ nvm list
         v4.4.2
->       v6.2.0
default -> stable (-> v6.2.0)
node -> stable (-> v6.2.0) (default)
stable -> 6.2 (-> v6.2.0) (default)
iojs -> N/A (default)

이것은 훌륭하게 작동했으며 사용 제안 nvm list은 사용자가 버전 관리로 발생하는 상황을 시각화하는 데 도움이됩니다. 감사!
Solvitieg

30

제 경우에는 다른 프로그램이 PATH변경 사항을 추가 했습니다.bashrc

다른 프로그램이 nvm을 초기화 PATH 한 후 변경 한 경우 nvm의 PATH변경 사항을 잊어 버렸으며 시스템 노드를 노드에 PATH갖습니다 (또는 노드 없음).

이 솔루션은에 NVM 설정을 이동하는 것이었다 하단.bashrc

### BAD .bashrc ###

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

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

해결책:

### GOOD .bashrc ###

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

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

(이것은 CentOS의 bash 4.2.46에서 발생했습니다. bash의 버그처럼 보이지만 잘못 생각할 수 있습니다.)


1
이것은 나를 도왔다! 기본값이 붙어있었습니다.
Redsandro

1
이 사람에게 메달을주세요! NVM_DIR 내보내기 후 zshrc에 다른 * rc 파일을 추가로로드하여 미치게했습니다. 감사합니다!
bobbytables

감사합니다! 이것은 나를 실책하게 만들었습니다.
나무

27

nvm은 PATH 변수를 변경하여 작업을 수행하므로 nvm.sh 스크립트를 소싱 한 후 PATH를 다른 것으로 변경하지 않아야합니다.

필자의 경우 nvm.sh가 .bashrc에서 호출되었지만 PATH 변수가 .bash_profile에서 업데이트되어 세션이 nvm 노드 이전의 시스템 노드를 찾았습니다.


1
이것을 어떻게 검사 할 수 있습니까? 나는 이것이 사실이라고 생각한다.
Mild Fuzz

이것은 나의 경우 감사였습니다! 내 .zshrc 파일에서 내보내기를 맨 위로 설정하고 맨 아래로 이동하면 문제가 해결되었습니다.
Alejandro Silva

그게 내 사건이야 해결책은 NVM ~ / .bash_profile 항목을 파일 + 세트의 끝 nvm alias defaultnvm use필요한 버전 으로 이동하는 것이 었습니다 .
유진 Tartakovsky

이것이 나를위한 해결책이었습니다. 다음으로 아래로 이동 .bashrc: export NVM_DIR="$HOME/.nvm"then. "/usr/local/opt/nvm/nvm.sh"
asmiller

10

최고 등급의 솔루션은 저에게 효과적이지 않은 것 같습니다. 내 솔루션은 다음과 같습니다.

  1. homebrew를 사용하여 nvm을 완전히 제거하십시오.brew uninstall nvm
  2. 다시 설치 brew install nvm
  3. 터미널에서 아래 단계를 따르십시오 (homebrew를 통해 nvm을 설치할 때도 나열 됨).

    mkdir ~ / .nvm cp $ (brew --prefix nvm) / nvm-exec ~ / .nvm / export NVM_DIR = ~ / .nvm source $ (brew --prefix nvm) /nvm.sh

위에서 설명한 단계는 NVM의 작업 디렉토리를 $ HOME 경로에 추가하고, nvm-exec를 NVM의 작업 디렉토리에 복사 한 다음 $ HOME / .bashrc, $ HOME / .zshrc 또는 쉘의 동등한 구성 파일에 추가합니다. homebrew를 사용하여 NVM 설치에 나열 됨)


7

여전히 모든 것을 시도했지만 운이 없다면 : _

1-> NVM 제거

rm -rf ~/.nvm

2-> 이것을 따라 npm 종속성을 제거하십시오.

3-> NVM 설치

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

4-> ~/.bash_profile구성 설정

운영 sudo nano ~/.bash_profile

다음에 복사하여 붙여 넣기

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

5-> CONTROL + X변경 사항 저장

6-> 달리기 . ~/.bash_profile

7-> 이제 nvm시스템에 설치되어 있어야합니다. 노드를 설치하려면 nvm install v7.8.0기본 노드 버전이되거나 모든 버전의 노드를 설치할 수 있습니다


1
고마워요! 이것은 bash에서 노드 경로를 설정하고 나를 위해 일한 유일한 솔루션이었습니다. 방금 "nvm install v7.8.0"을 사용하는 대신 "nvm install node"를 사용하여 최신 노드 버전을 설치했습니다.
user3492435

5

이 질문은 OSX에 대해 언급되었지만 Linux OS에서 나에게 발생했습니다. 나는 사용하려고 시도 nvm alias default <version>했지만 새로운 터미널 세션마다 사용 된 노드 버전을 잊어 버렸습니다. 그래서, 여기 내가 알아 낸 해결책이 있습니다.

노드 버전의 기본 별명을 설정하고 .bashrc 및에 다음 코드를 입력하십시오 source .bashrc.

export NVM_DIR="/home/bonnie/.nvm"
## If the file exists and is not empty
if [ -s "$NVM_DIR/nvm.sh" ]; then
    ## Source it
    source "$NVM_DIR/nvm.sh"
fi
NODE_DEFAULT_VERSION=$(<"$NVM_DIR/alias/default")
export PATH="$NVM_DIR/versions/node/$NODE_DEFAULT_VERSION/bin":$PATH

설명 솔루션 링크


1
참고로, 이것은 v리모컨을 설정할 때 버전 에 포함시키는 것에 의존합니다 . 예 v4.2.4대신 4.2.4.
vaughan

4

nvm install 10.14예를 들어을 수행하면 nvm use현재 셸 세션에 해당 버전이 사용되지만 향후 세션에 대해 항상 기본값으로 설정 하지는 않습니다 . 새 쉘 세션에서 얻는 노드 버전은에 의해 결정됩니다 nvm alias default. 혼란스럽게도 nvm install기본 별칭이 아직 설정되지 않은 경우에만 설정됩니다. 예상되는 동작을 얻으려면 다음과 같이하십시오 :

nvm alias default ''; nvm install 10.14

그러면 해당 버전이 다운로드되고 현재 세션에 사용 되며 향후 세션의 기본값으로 설정됩니다.


3

버전을 설치 한 후 실행하십시오.

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local

이 명령은 nvm을 통해 활성화 한 모든 노드 버전을 / usr / local / 디렉토리에 복사하고 모든 사용자가 액세스 할 수 있도록 권한을 설정합니다.


해당 명령에서 &&s 대신 s를 사용하는 것이 좋습니다 ;. (가) 경우 which노드를 찾는데 실패, 우리는 chmod를로 진행 싶지 않아 /bin/*!
joeytwiddle


2

ZSH를 사용하고 있으므로 ~/.zshrcNVM 관련 줄을 순서대로 수정해야했습니다 .

[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
source ~/.nvm/nvm.sh

1
$ nvm alias default {NODE_VERSION}

위의 명령을 사용하면 노드 버전 만 업데이트하지만 npm여전히 이전 버전을 사용합니다.

다음은 업데이트에 대한 또 다른 솔루션 인 모두 nodenpm, 내가 노드를 사용하고자하는 내 경우에는 8.9.4내가 명령 아래를 사용했다.

$ nvm use default 8.9.4

그리고 명령은 출력을 반환합니다.

이제 노드 v8.9.4 (npm v5.6.0) 사용


0

SDKMAN도 있다면 ...

어떻게 든 SDKMAN이 내 NVM과 충돌했습니다. 당신이 이것으로 끝내고 여전히 그것을 알아낼 수 없다면, 나는 SDKMAN에서 "이것은 반드시 파일의 끝에 있어야합니다 ..."를 무시하고 그 뒤에 NVM 줄을 넣어서 수정했습니다.

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/Users/myname/.sdkman"
[[ -s "/Users/myname/.sdkman/bin/sdkman-init.sh" ]] && source "/Users/myname/.sdkman/bin/sdkman-init.sh"

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

0

VS 코드 편집기에서 통합 터미널을 사용하는 동안 동일한 문제에 직면했습니다. nvm을 사용하여 노드 버전을 변경 한 후 VS 코드를 다시 시작하면 문제가 해결되었습니다.


0

간단한 지침은 다음과 같습니다.

1) 설치 :

nvm install 8.10.0

2) 터미널 당 1 회 사용

nvm use 8.10.0

3) 모든 터미널에 기본값으로 설정

nvm alias default 8.10.0

이러한 작업을 수행하려면 루트 권한을 사용해야 할 수도 있습니다.

자세한 내용은 nvm 설명서 를 확인하십시오 .

또한 IDE의 노드 버전을 지정해야 할 수도 있습니다. 여기에 이미지 설명을 입력하십시오


-2

또한 nvm 전에 노드를 설치 한 경우 ~ / .bash_profile 에서 다음과 같은 항목이 없는지 확인하십시오 .

export PATH=/bin:/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH

있는 경우 주석 / 제거하면 nvm 이 기본 노드 버전 처리를 시작해야합니다.


경로 변수를 설정하면 nvm 버전 선택과 아무런 관련이 없습니까?
sn0r

nvm.sh는 PATH 를 설정 한 후 (예 : 위와 같이) PATH를 수정해야합니다 . 이를 통해 nvm은 "시스템"버전의 노드가있는 / usr / local / bin 앞에 버전 디렉토리 배치 할 수 있습니다.
Denis Howe

-3

이 문제와 오랜 시간 동안 충돌을 일으켜 문제를 해결하는 방법을 찾았습니다. 다음은 문제에 대한 단계별 솔루션입니다.

  • 터미널을 열고 명령 행 개발자 도구를 설치하십시오.

    xcode-select --install

  • 엔터 키를 치시오

  • 최신 버전의 NVM을 설치하십시오.

    cd ~/

  • 엔터 키를 치시오

    git clone https://github.com/creationix/nvm.git .nvm

  • 엔터 키를 치시오
  • 이전에 .nvm 폴더를 이미 만든 경우 다음 오류 메시지가 표시됩니다.

    fatal: destination path '.nvm' already exists and is not an empty directory.

    그렇지 않으면 복제 프로세스가 완료 될 때까지 실행중인 것을 볼 수 있습니다.

  • 최신 NVM 버전을 확인하십시오.

    cd ~/.nvm

  • 엔터 키를 치시오

    git checkout v0.34.0

    다음과 유사한 응답이 나타납니다.

    HEAD is now at 3d9c31d v0.34.0

    시스템마다 버전이 다를 수 있습니다.

    ls

  • 엔터 키를 치시오

    . nvm.sh

  • 엔터 키를 치시오

    nvm list

  • 엔터 키를 치시오

    당신은 당신의 컴퓨터에 설치된 다른 노드 버전을 볼 수 있습니다, 약간의 오류가있을 수 있습니다, 그들에게주의를주지 마십시오.

    nvm ls-remote | tail -n9

  • 엔터 키를 치시오

    nvm list

  • vim을 사용하여 bash를 엽니 다.

    vim ~/.bash_profile

  • vim 편집기에서 : i를 눌러 INSERT mode새 줄 을 입력 하고 시작 하십시오 . 편집 할 때 실수가 있으면 ESC키를 누른 다음 :q!저장하지 않고 종료하십시오.

    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

  • ESC파일 편집이 끝나면 키를 누릅니다 (삽입 모드가 사라지는 것을 볼 수 있습니다).

  • 를 눌러 :wq파일을 저장하십시오.
  • 엔터 키를 치시오

    nvm ls-remote | tail -n9

  • Enter 키를 누르고 제시된 최신 nvm 버전을 설치하십시오.

    nvm install 12.6.0

  • 프로세스가 완료되면 다음을 볼 수 있습니다. Now using node v12.6.0 (npm v6.9.0)

  • 다음을 눌러 설치가 성공했는지 확인할 수 있습니다.

    node -v또는 npm -v시스템에 설치된 nvm 및 npm의 버전을 표시해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.