nvm은 npm 구성“접두사”옵션과 호환되지 않습니다.


208

다른 NodeJS 버전을 실행하려고 nvm하지만이 오류가 발생합니다.

$ nvm use v4.2.4

nvm is not compatible with the npm config "prefix" option: 
   currently set to "/Users/z/.npm-global"
Run `npm config delete prefix` or `nvm use --delete-prefix v4.2.4` to unset it.

피하기 위해 내 접두어를 설정했습니다 sudo npm( https://docs.npmjs.com/getting-started/fixing-npm-permissions 참조 ).

nvm전체적으로 설치된 패키지의 접두사를 잃지 않고 사용할 수있는 방법이 있습니까?


내가 사용하는 NPM 설정 삭제 접두사를 이 문제를 해결하기 위해, 문제는 지금까지
ggdx하지

@DanWhite 접두사를 삭제하면 전역 설치가 전용 디렉토리로 전환되지 않습니다.
Dmitri Zaitsev

5
(nvm 관리자) 여기가 핵심입니다. nvm을 사용하면 사용자가 아닌 전역 설치를 관리합니다. 이와 달리 전역 설치는 노드 버전간에 공유해서는 안됩니다.
LJHarb

2
각 노드 사본에는 자체 npm이 제공되어 자체 설정을 결정합니다.
LJHarb

1
실제로 nvm을 사용하여 선택한 각 노드 버전은 셸 단위로 설계되었습니다.
LJHarb

답변:


379

접두사 삭제 및 재설정

$ npm config delete prefix 
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1

참고 : 오류 메시지에 표시된 버전 번호로 버전 번호를 변경하십시오.

nvm은 npm config "prefix"옵션과 호환되지 않습니다. 현재 "/ usr / local"로 설정 됨 "npm config delete prefix"또는 "nvm use --delete-prefix v6.11.1 --silent"를 실행하여 설정을 해제하십시오.


Github의 @gabfiocchi에 대한 크레딧- "nvm 접두사를 덮어 써야합니다"


10
이것은 매력처럼 작동했습니다! 내 노드 버전을 가져와야했습니다.
Sirius_B

기호 코드 / usr / local / bin / node가있어 vscode의 통합 터미널이 보지 말아야 할 노드 버전을 볼 수 있습니다. 위의 단계를 수행 한 다음 기호 링크를 삭제하면 문제가 해결 된 것으로 보입니다. 내 노드와 npm은 현재 nvm에 의해 관리됩니다
Sudhanshu Mishra

이것은 완벽하게 작동합니다. 접두사로 노드 버전을 설정하는 것을 놓치지 마십시오. npm config set prefix $NVM_DIR/versions/node/<node-version-directory>
Hiren

3
이것은 현재 창에서만 작동합니다. 새 쉘이나 새 창을 열면 다시 한번 수행해야합니다.
jtiscione

3
순서대로해야합니다. 1. NVM 사용 --delete-접두사 VX.XX --silent 2. NPM 설정 삭제 접두사 3. NPM 설정 세트 접두사 $ NVM_DIR / 버전 / 노드 / VX.XX
Guangtong 쉔

66

나는 같은 문제가 있었고 실행 npm config delete prefix이 도움이되지 못했습니다.

그러나 이것은했다 :

brew를 사용하여 nvm을 설치 한 후 ~/.nvm디렉토리를 작성하십시오 .
$ mkdir ~/.nvm

다음 줄을 추가하십시오 ~/.bash_profile.

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

(당신이 어떤에서 다른 NVM 관련 명령이 없는지 확인 ~/.bashrc하거나 ~/.profile또는~/.bash_profile )

새 터미널을 열고 이번에는 경고 메시지를 인쇄하지 않아야합니다. 명령
을 실행하여 nvm이 작동 중인지 확인하십시오 nvm --version.
그 후, NodeJS를 사용하여 설치 / 재설치nvm install node && nvm alias default node .

더 많은 정보

나는 설치 nvm하여 homebrew본 신고서를 가지고 이후 있음 :

업스트림은 Homebrew를 통한 nvm의 명시 적 관리를 지원하지 않기로했으며,보고하기 전에 표준 nvm 설치 방법과 비교하여 문제를 확인해야합니다.

NVM의 작업 디렉토리가 없으면 작성해야합니다.

 mkdir ~/.nvm

다음 ~/.bash_profile또는 원하는 쉘 구성 파일 을 추가 하십시오.

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

$NVM_DIR임의의 위치로 설정할 수 있지만 변경하지 않은 상태로두면 /usr/local/Cellar/nvm/0.31.0업그레이드 / 재설치시 nvm 설치 노드 설치가 삭제됩니다.

그것을 무시하면이 오류 메시지가 나타납니다.

nvmnpm config"접두사"옵션 과 호환되지 않습니다 : 현재 설정 해제 를 위해 "/usr/local/Cellar/nvm/0.31.0/versions/node/v5.7.1"
실행 nvm use --delete-prefix v5.7.1 --silent으로 설정되어 있습니다.

이전 가이드 ( homebrew/nvm)를 따르고 나서 NodeJS를 다시 설치해야한다는 것을 알았습니다. 그래서 나는했다 :

nvm install node && nvm alias default node

그리고 그것은 고정되었습니다.

업데이트 : brew를 사용하여 NVM을 설치하면 터미널이 느리게 시작됩니다. 당신은 할 수 있습니다 이 명령에 따라 이를 해결하기를.


6
nvm alias default node내 경우에 나를 도울 것 같았다
mirkobrankovic

28
nvm추출을 통해 설치할 때는 (nvm 관리자) 가 지원되지 않습니다. 그것을 제거하고 readme에서 curl 스크립트를 사용하십시오.
LJHarb

3
curl 스크립트를 사용하여 설치했습니다 nvm. 이 답변은 저에게 효과적이지 않았습니다.
intcreator

1
@intcreator 감사합니다. 나는 완전한 신선한은이 가이드에 따라 NVM 사용하여 노드의 설치 일을 결국 : nearform.com/blog/how-to-manage-node-js-sudo-free-with-nvm을 그리고 내 끊기 내가 이전에 있다고 었죠 더 이상 지원되지 않는 homebrew를 사용하여 설치됩니다. 디렉토리에 이미 권한 문제가 있었기 때문에 제거하는 데 시간이 걸리는 많은 잔재물이 남아 있었고 다시 rm -rf node_modules실행 npm install해야했습니다.
Jake T.

1
후손의 명확성을 위해 brew remove node -f설치된 모든 버전을 제거 하는를 수행해야했습니다 . 먼저이 작업을 수행 한 다음 위의 링크에있는 가이드를 따르고 node_modules를 제거하십시오. 새로 설치해야합니다! 그런 다음 npm도 설치해야한다고 생각했는데 nodejs.org 기사의 지침을 따라 검색했을 때 나타납니다. npm install npm@latest -g일단 노드를 설치하면 명령이었습니다.
Jake T.

31

이는 노드의 로컬 설치와 충돌했을 수 있습니다 (과거 NVM 이외의 다른 방법으로 설치 한 경우). 이 노드 인스턴스를 삭제해야합니다.

  1. node_modules를 제거하십시오 sudo rm -rf /usr/local/lib/node_modules
  2. 노드 제거 sudo rm /usr/local/bin/node
  3. 노드 링크 제거 cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm

nvm을 설치할 수없는 후


9
몇 가지 설명만으로 코드 전용 답변을 늘리시겠습니까? 명령 줄이 설명하는 것보다 복잡하기 때문에 주석으로는 충분하지 않습니다. 답의 세부 사항이 문제를 해결하는 이유를 설명하십시오. 오래된 답변과 답변을 대조하십시오. 이 질문에 대한 답을 부가 가치로 만드는 것은 무엇입니까?
Yunnosch

나를 위해, 빈 첫 번째 코드 라인 (최근에 추가 한)은 자체 설명이 필요합니다.
Yunnosch

StackOverflow에서 5 개월이 지나면 매우 유용한 안내 도움말 둘러보기를 고려하십시오 .
Yunnosch

이 코드 스 니펫은 문제를 해결할 수 있지만 설명을 포함하면 게시물의 품질을 향상시키는 데 실제로 도움이됩니다. 앞으로 독자에게 질문에 대한 답변을 제공하고 있으며 해당 사람들이 귀하의 코드 제안 이유를 모를 수도 있습니다. 설명 주석으로 코드를 복잡하게 만들지 마십시오. 이렇게하면 코드와 설명의 가독성이 떨어집니다!
Filnor

"nvm을 설치할 수없는 경우"따라서 nvm을 사용하는 것이 목표라면 안합니까?
Jake T.

18

이 오류는 NVM 설치 폴더 경로Symbolic Link 가 있을 때 발생할 수 있습니다 .

설명

NVM의 기본 설치 경로는 다음과 같습니다. $HOME/.nvm그러나 홈 폴더는 내 경우와 같은 다른 드라이브의 기호 링크 일 수 있습니다.

예를 들어, 내 홈 폴더는 다른 드라이브에 대한 심볼릭 링크입니다.

/home/myuser -> /bigdrive/myuser

접두사 문제가 발생합니다.

해결책

시작 스크립트 (.bashrc 또는 .zshrc 또는 기타)에서 NVM 폴더를 직접 경로로 변경하십시오.

예 : NVM_DIR="/bigdrive/myuser/.nvm".

.bashrc

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

감사! 귀하의 답변에 더 많은 가시성이 있어야합니다
ben

아니. 나는이 미친 오류를 이해하기 위해 뇌를 fried 다. 나에게 도움이되는 게시물을 찾지 못했습니다. 나는 문제를 해결하기 위해 열심히 싸워야했다. 기꺼이 도와 드리겠습니다. 더 잘 보이도록 내 답변에 투표하십시오.
André Avelar

내 echod $ NVM_DIR은 "/Users/vijayshanker/.nvm"이었습니다. bashrc에 "export NVM_DIR ="/ Users / vijayshanker / .nvm (및 나머지) "를 넣으면 시도했지만 여전히 수정하지는 않았습니다. 6 시간하십시오 도움말 참고 : 나는 NPM 난 NPM에서 내 노드를 설치하지 않은, 설치하지 않은
비제이 단도

한 가지 해결책은 .bashrc 또는 명령 줄에서 NVM_DIR = $ (readlink -f "$ HOME / .nvm")을 내보내는 것입니다. $ HOME / .nvm에서 모든 심볼릭 링크를 제거하고 실제 디렉토리 만있는 일반 전체 경로를 내 보냅니다.
님라

10

를 통해 설치된 노드를 사용하는 동안 나는이 우연히 nvm함께, nvm사제를 통해 설치. 나는 실행하여 그것을 해결 brew uninstall nvm, rm -rf $NVM_DIR후 사용하여 NVM를 다시 설치 관계자는 스크립트를 설치 하고 내가 필요한 노드 버전을 다시 설치.

참고 : 나는 또한 $NVM_DIR마운트하고 심볼릭 링크했습니다. 나는 그것을 홈 디렉터로 다시 옮겼다.


8

홈 디렉토리가 어딘가에 마운트되어 있으면 nvm이 symlink와 제대로 작동하지 않아서 문제가 될 수 있습니다. $ NVM_DIR이 어디에 있는지 상관하지 않기 때문에 이것을 실행하면 모든 것이 잘 작동합니다.

$ mv ~/.nvm /tmp/
$ export NVM_DIR="/tmp/.nvm"
$ nvm use --delete-prefix v6.9.1

6

여기에 이미지 설명을 입력하십시오나는 같은 문제가 있었고 터미널을 사용할 때마다 정말 짜증났다. 터미널에 명령을 실행하고 고정되었습니다.

그 사람들을 위해 brew에서 nvm을 제거하십시오.

제거 nvm을 추출하는 것만으로는 충분하지 않을 수 있습니다.

npm 접두사가 여전히 / usr / local 인 경우이 명령을 실행하십시오.

sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}


4

동일한 오류 메시지가 있지만 다른 솔루션이 있습니다. 컬 중 자동 생성 경로 (install.sh)가 일치하지 않습니다. 이것을 확인하십시오 :

echo $NVM_DIR

나의 경우에는: /var/www//.nvm . 자동 생성 된 bash 파일에 표시하고 변경 한 후 바꾸십시오 (~ / .bash_profile, ~ / .zshrc, ~ / .profile 또는 ~ / .bashrc).

바꾸다

export NVM_DIR="$HOME/.nvm"

(예)

export NVM_DIR="$HOME.nvm"

내 의견으로는 사용자를 만들 때 /를 / etc / passwd 파일에서 제거하고 useradd --home / home / user /로 설정하고 모든 것이 작동하기 시작했기 때문에 여기에 왔습니다. 다시
이스라엘

1

나는 https://stackoverflow.com/a/47861348/2391795 답변을 따랐 지만 제대로 작동하지 않았습니다.

$ npm config delete prefix 
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1

권장 명령을 실행 한 후 nvm이 더 이상 작동하지 않으면 running nvm use은 사용중인 올바른 노드 버전 node -v을 표시 하지만 running 은 다른 노드를 표시합니다 . 더 이상 노드 버전을 변경할 수 없습니다.

수정하기 위해 nvm을 완전히 제거했다가 다시 설치했습니다. 나는 다음 을 실행하여 https://github.com/creationix/nvm#manual-uninstall 을 따랐다.

$ rm -rf "$NVM_DIR"

그런 다음 .zshrc내 경우 mvm과 관련된 줄을 제거하도록 편집했습니다.

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"

그런 다음 새로운 셸을 시작하여 (nvm 이이 새로운 셸에로드되지 않도록) https://github.com/creationix/nvm#install-script를 실행했습니다.

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

이전에 내에서 제거했던 행을 nvm에 추가했습니다 .zshrc.

그런 다음 예전처럼 nvm을 사용할 수있었습니다. 나는 문제가 잘못되어 모든 것을 다시 설치 해야하는 이상한 사례라고 생각합니다.이 문제로 인해 대부분의 사람들 이이 문제를 겪는 것처럼 보이지 않습니다.


1

내 상황을 설명하겠습니다.

먼저 현재 구성을 확인하십시오.

$ nvm use --delete-prefix v10.7.0
$ npm config list

그런 다음 출력에서 ​​오류 구성을 찾았습니다.

; project config /mnt/c/Users/paul/.npmrc
prefix = "/mnt/c/Users/paul/C:\\Program Files\\nodejs"

그래서 C:\\Program Files\\nodejs/mnt/c/Users/paul/.npmrc에서 삭제했습니다 .


1

VSCode 및 JetBrains 터미널에서 표시되었지만 다음 명령을 사용하여 기본 터미널에서는이 문제를 해결했습니다.

ls -la /usr/local/bin | grep "np[mx]"

이렇게하면 마지막에 해결 된 경로가 제공됩니다.

... npm -> ../lib/node_modules/npm/bin/npm-cli.js
... npx -> ../lib/node_modules/npm/bin/npx-cli.js

거기에서 파일을 제거하고 VS 코드를 다시 시작하면 문제가 해결됩니다.

rm -R /usr/local/bin/npm /usr/local/lib/node_modules/npm/bin/npm-cli.js
rm -R /usr/local/bin/npx /usr/local/lib/node_modules/npm/bin/npx-cli.js

수정 링크 : https://github.com/nvm-sh/nvm/issues/1690#issuecomment-392014774


0

nvm 접두사 문제에 대한 해결책을 찾고 있었는데이 질문을 찾았습니다 (솔루션을 찾기 전에). 여기 내 쉘 "대화"가 있습니다. 누군가에게 유용 할 수 있기를 바랍니다. 이 게시물의 도움으로 접두사를 설정할 수있었습니다 : https://github.com/npm/npm/issues/6592

을 사용 npm config delete prefix하거나 nvm use --delete-prefix사용하기 전에 npm --prefix="" set prefix ""npm ERR! 유효하지 않은 코드 0

모든 노드 버전에서 동일한 절차를 반복해야하며, 설치 후 접두사가 (필자의 경우) / usr / local로 다시 설정됩니다.

    $ nvm install 0.10
    ######################################################################## 100.0%
    nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local"
    Run `npm config delete prefix` or `nvm use --delete-prefix v0.10.44` to unset it.
    $ npm --prefix="" set prefix ""
    $ nvm use 0.10.44
    nvm is not compatible with the npm config "prefix" option: currently set to "/home/john"
    Run `npm config delete prefix` or `nvm use --delete-prefix v0.10.44` to unset it.
    $ nvm use --delete-prefix v0.10.44
    Now using node v0.10.44 (npm v1.3.10)
    $ nvm ls
    v0.10.44
             v4.4.3
    ->       system
    default -> 4.4.3 (-> v4.4.3)
    node -> stable (-> v4.4.3) (default)
    stable -> 4.4 (-> v4.4.3) (default)
    iojs -> N/A (default)
    $ npm config get prefix
    /usr/local

0

내 홈 폴더를 Linux의 새 드라이브로 옮긴 후에이 문제가 발생했습니다. .nvm 폴더를 제거하고 nvm을 다시 설치하여 수정되었습니다.


0

방금 문제를 해결했습니다. 나는 심볼릭 링크 $HOME/.nvm$DEV_ZONE/env/node/nvm디렉토리. 나는 같은 문제에 직면했다. 다음과 같이 교체 NVM_DIR했습니다$HOME/.zshrc

export NVM_DIR="$DEV_ZONE/env/node/nvm"

BTW, 또는를 사용 하지 않고 curl또는 wget명령을 사용하여 NVM을 설치하십시오 brew. 자세한 내용은 Github에서이 문제의 의견을 확인하십시오. 855 # issuecomment-146115434


로 설치하는 nvm것은 npm어떻습니까?
Dmitri Zaitsev

1
homebrew를 통한 nvm 설치는 공식적으로 사용되지 않으며 일부 비 호환성으로 인해 문제가 발생합니다. curl / wget을 사용하는 공식적인 방법은 github.com/creationix/nvm#install-script를 참조 하십시오. github.com/creationix/nvm/issues/298#issuecomment-152255091을 참조하십시오. nvm을 통한 설치는 nvm이 설치되므로 AFAIK를 지원하지 않습니다. npm이므로 npm도 nvm을 설치하면 에지 사례가 발생할 수 있습니다. 이전에 연결 한 문제에 대해 읽을 수 있습니다.
Vadorequest

0

방금 아이디어가 있습니다. 심볼릭 링크를 사용하여 오류를 해결하면 여전히 설치된 패키지에 접두사를 사용할 수 있습니다. ln -s [your prefix path] [path in the '~/.nvm'] 그러면 폴더에 기호 폴더가 ~/.nvm있지만 실제로 전역 패키지는 여전히 [접두사 경로]에 설치됩니다. 그러면 오류가 다시 표시되지 않으며 nvm use **정상적으로 사용할 수 있습니다 . 추신 : 그것은 나를 위해 일했습니다 mac. pps : 전체적으로 설치된 패키지를 사용하려면 $PATHnpm bin폴더로 설정 하는 것을 잊지 마십시오 .


-2

참고 :
nvm을 제거, 삭제 또는 제거하려면 $NVM_DIR폴더를 제거하십시오 (보통 ~/.nvm)
.
rm -rf ~/.nvm

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