development

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

big-blog 2020. 2. 12. 23:39
반응형

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


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

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


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

$ nvm alias default 0.12.7

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


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

nvm alias default node

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

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

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


제 경우에는 다른 프로그램이 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. 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 설치에 나열 됨)


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

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기본 노드 버전이되거나 모든 버전의 노드를 설치할 수 있습니다


이 질문은 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

설명 솔루션 링크


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

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

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


나는 여기서 새로운 길을 찾았다. n 대화식으로 Node.js 관리를 사용하면 도움이됩니다.


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

nvm alias default ''; nvm install 10.14

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


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

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

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

    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의 버전을 표시해야합니다.

기반 : macOS Mac OS X에서 최신 Node Version Manager NVM 설치 및 노드 및 NPM 설치 방법


$ nvm alias default {NODE_VERSION}

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

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

$ nvm use default 8.9.4

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

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


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

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

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

참고 URL : https://stackoverflow.com/questions/24585261/nvm-keeps-forgetting-node-in-new-terminal-session



반응형