programing

nvm이 새 터미널 세션에서 노드를 계속 "재연결"함

linuxpc 2023. 6. 30. 22:09
반응형

nvm이 새 터미널 세션에서 노드를 계속 "재연결"함

X에서 할 때, 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공식 설치 스크립트와 함께 설치합니다.

양조 버전에 대한 나의:

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

그리고 설치를 위해서요.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

제 경우, 다른 프로그램이 추가되었습니다.PATH의로변경으로 .bashrc

PATH nvm 초기화 후 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의 벌레처럼 보이지만, 제가 잘못 알고 있을 수도 있습니다.)

최신 안정 버전을 설치하는 방법

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 이 .vmrc에서 호출되었지만 PATH 변수가 .vm_profile에서 업데이트되어 세션이 nvm 노드보다 먼저 시스템 노드를 찾게 되었습니다.

다음은 간단한 지침입니다.

설치:

nvm install 8.10.0

터미널당 1회 사용

nvm use 8.10.0

모든 터미널에 대해 기본값으로 설정

nvm alias default 8.10.0

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

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

IDE의 노드 버전을 지정해야 할 수도 있습니다.

이러한 중 것도 내 때문에 의 첫 하는 것처럼 단, nvm 은않며으작았단지동서, ▁no▁it▁none▁youarily▁via▁of▁nunless▁change▁tempor▁worked▁version한▁nvm않▁my는▁environment이▁to▁solutions,지▁installed하변vm▁in▁node▁seems▁the경▁first▁load러▁(로으▁of▁thesenvm use).

내가 찾은 기본값을 변경하는 유일한 방법은 다음과 같습니다.

  • 캐시 지우기: nvm 파일:nvm cache clear
  • 버전으로 합니다.nvm alias default 12 버전이든 (는떤또어든
  • 버전으로 : 원는버전전환로으:nvm use 12
  • 다른 모든 버전 제거:
    • nvm ls 목록 설치 목록 표시)
    • nvm uninstall x
  • 버전을 다시 합니다.nvm install x

이 스크립트를 사용하여 이 프로세스를 자동화할 수 있습니다(첫 번째 변수를 원하는 버전으로 변경하기만 하면). 이전에 사용했던 모든 버전이 자동으로 다시 설치됩니다.

DEFAULT_NVM_VERSION=16
nvm cache clear
nvm install $DEFAULT_NVM_VERSION
nvm alias default $DEFAULT_NVM_VERSION
NVERS=$(nvm ls --no-alias | grep -v -- "->" | grep -o "v[0-9.]*")
while read ver; do nvm uninstall $ver; done <<< $NVERS
while read ver; do nvm install $ver; done <<< $NVERS
nvm use $DEFAULT_NVM_VERSION

또는 원라이너로서:

DEFAULT_NVM_VERSION=16 && nvm cache clear && nvm install $DEFAULT_NVM_VERSION && nvm alias default $DEFAULT_NVM_VERSION && NVERS=$(nvm ls --no-alias | grep -v -- "->" | grep -o "v[0-9.]*") && while read ver; do nvm uninstall $ver; done <<< $NVERS && while read ver; do nvm install $ver; done <<< $NVERS && nvm use $DEFAULT_NVM_VERSION

이제 새 터미널이 기본 버전을 준수해야 합니다.

최고 등급의 솔루션은 저에게 효과가 없는 것 같습니다.나의 해결책은 다음과 같습니다.

  1. 홈브루를 사용하여 nvm을 완전히 제거합니다.brew uninstall nvm
  2. 다시 설치brew install nvm
  3. 터미널에서 아래 단계를 수행합니다(홈브루를 통해 nvm을 설치하는 경우에도 나열됨).

    mkdir ~/.nvm cp $(brew --vir nvm)/nvm-exec ~/.nvm/ 내보내기 NVM_DIR=~/.nvm 소스 $(brew --vir nvm)/nvm.sh

위에서 설명한 단계는 NVM의 작업 디렉토리를 $HOME 경로에 추가하고, nvm-exec을 NVM의 작업 디렉토리에 복사하며, $HOME/.bashrc, $HOME/.zshrc 또는 셸의 동등한 구성 파일에 추가합니다. (홈브루를 사용하여 NVM 설치에 나열된 내용에서 가져온 내용)

수정을 했습니다.~/.zshrcNVM과 관련된 행을 다음 순서로 표시합니다.

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

만약 당신이 여전히 모든 것을 시도했지만 운이 없다면 당신은 이것을 시도할 수 있습니다 :_

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>그러나 새로운 터미널 세션마다 사용된 노드 버전이 잊혀졌습니다. 그래서 여기 제가 알아낸 해결책이 있습니다.

노드 버전에 대한 기본 별칭을 설정하고 .vmsrc에 다음 코드를 넣으십시오.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

솔루션 설명 링크

하고있다nvm install 10.14를 들면, will 를들어예, will.nvm use현재 셸 세션에 대한 해당 버전이지만 항상 예상하는 대로 이후 세션에 대한 기본값으로 설정되지는 않습니다.새 셸 세션에서 얻을 수 있는 노드 버전은 다음과 같이 결정됩니다.nvm alias default 헷리게도갈,,nvm install기본 별칭이 아직 설정되지 않은 경우에만 설정됩니다.예상 동작을 가져오려면 다음을 수행합니다.

nvm alias default ''; nvm install 10.14

이렇게 하면 해당 버전이 다운로드되고 현재 세션에 사용되며 이후 세션에 대한 기본값으로 설정됩니다.

버전을 설치한 후 이를 실행합니다.

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 Interactive Manage Your Node.js는 도움이 됩니다.

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

  • zshash와 함께 NVM을 사용합니다.
  • 이 링크를 따라 nvm을 제거합니다.
  • $ brew install nvm
  • 이 노선을 운행했습니다.$ source $(brew --prefix nvm)/nvm.sh 후 을 다시 시작한 후
  • 을 에선 긋다을에 .~/.zshrcnvm 공식 GitHub 페이지에서도 지시하는 파일
export NVM_DIR="$HOME/.nvm"
  [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh"  # This loads nvm
  [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion

# place this after nvm initialization!
autoload -U add-zsh-hook

load-nvmrc() {
  local node_version="$(nvm version)"
  local nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$node_version" ]; then
      nvm use
    fi
  elif [ "$node_version" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

.bashrc 파일에서 어떤 이유로 다음을 발견했습니다.

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

그리고 사용하지 않는 깃발을 제거해야 했습니다. 애초에 그것을 거기에 두었던 기억이 없습니다.한 가지 더 확인해 보겠습니다.

리눅스/우분투

이것을 해결하는 방법은 여기에서 볼 수 있습니다.

nvm use지속하기 위한 것이 아닙니다. 단지 껍데기의 수명 동안일 뿐입니다.

둘 중 하나를 할 수 있습니다.nvm alias default node열때 를 수 ..nvmrc현재 디렉토리의 임의의 위치에 우선할 파일, 위쪽으로/. https://github.com/nvm-sh/nvm/issues/658

ubutnu-terminal

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

내 쪽에서, 나는 안정적인 별칭과 기본 별칭을 모두 변경해야 했습니다.

nvm alias stable {node_version}

nvm alias default {node_version}
$ nvm alias default {NODE_VERSION}

명령어를 버전은 업데이트합니다.npm여전히 이전 버전을 사용합니다.

다음은 두 가지를 모두 업데이트하기 위한 다른 솔루션입니다.node그리고.npm저의 경우 노드를 사용하고 싶습니다.8.9.4그리고 아래 명령을 사용했습니다.

$ nvm use default 8.9.4

명령을 실행하면 출력이 반환됩니다.

이제 노드 v8.9.4(npm v5.6.0)를 사용합니다.

섹션에 저소의문섹언바급같와이한서제션,nvm use단지 평생 동안 껍질을 벗길 수 있을 뿐입니다.나는 이것이 매우 유용하다는 것을 알았지만, 때때로 다른 버전의 코드가 필요한 다른 코드베이스를 작업할 때 실제로 당신을 곤경에 빠뜨릴 수 있습니다.GitHub에서 관련 토론에 대한 링크입니다.

어떤 이유에서인지, 내 안에서.~/.profile노드의 버전을 선택하고 있는 것을 발견한 파일을(를) 재정의합니다.alias default

한 가지 더 확인해 보겠습니다.

또한 nvm 이전에 노드가 설치되어 있는 경우 ~/.bash_profile에 다음과 같은 항목이 없는지 확인합니다.

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

해당 버전이 있는 경우 주석을 달거나 제거하면 nvm이 기본 노드 버전을 처리하기 시작합니다.

Ubuntu에서는 예를 들어 cron 작업이나 init 또는 시작 스크립트에서 비인터랙티브 셸을 실행하는 경우 잠재적인 문제가 있습니다.

우분투.bashrc상단에 셸이 비파괴적인 경우 조기 탈락하는 가드가 있습니다.

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

스크립트를 위해 는 NVM을 할 수 .~/.bashrc그리고 NVM을 파일의 맨 위, 가드 바로 위로 이동시킵니다.

더 안전한 것은 NVM을 복사하여 두 번 표시하는 입니다.그러면 다른 라인이 수정할 때 다른 답변에 언급된 문제가 해결됩니다.PATHNVM 이후에. NVM은 셸 시작 속도를 약간 늦출 수 있지만 두 번 실행하는 것을 개의치 않는 것처럼 보입니다.

github의 nvm 자동 로드 스크립트에서 변경해야 했습니다.

local node_version="$(nvm version)"local node_version="$(node -v)"

경로에 있는 시스템에 nvm이 로컬로 설치되어 있습니다.nvm version무슨 일이 있어도 계속 시스템이라고 말했습니다.

1.- 홈브루를 통해 설치

terminal을 하고 있기 2.- zsh 터미사있기때문에고하용을,~/.zshrc이 줄을 추가합니다. bash를 사용하는 경우 해당 줄을 입력해야 합니다.~/.bash_profile

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

참조: 이 문제의 원인은 NPM이 액세스/쓰기하려는 폴더가 명령을 실행하는 사용자가 소유하지 않는다는 사실과 관련이 있습니다.

아래에 명시된 명령을 실행하면 즉시 실행할 수 있습니다!

sudo chown -R `whoami` ~/.npm
sudo chown -R `whoami` /usr/local/lib/node_modules

sudo 없이 npm install -g ... 또는 npm uninstall -g ...를 실행해 보십시오. 그러면 오류 없이 실행됩니다.

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

반응형