nvmはnpm configの「prefix」オプションと互換性がありません:


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 npmhttps://docs.npmjs.com/getting-started/fixing-npm-permissionsを参照)。

nvmグローバルにインストールされたパッケージのプレフィックスを失うことなく使用できる方法はありますか?


私はこれを回避するためにnpm config deleteプレフィックスを使用します。これまでのところ問題ありません
ggdx

@DanWhiteプレフィックスを削除すると、グローバルインストールが専用ディレクトリに転送されなくなります。
Dmitri Zaitsev

5
(ここではnvmのメンテナ)それがポイントです。nvmでは、あなたではなく、それがあなたのグローバルインストールを管理します。これとは別に、グローバルインストールをノードバージョン間で共有しないでください。
LJHarb 2017年

2
ノードの各コピーには、独自の設定を決定する独自のnpmが付属しています。
LJHarb 2017年

1
実際、nvmで選択された各ノードバージョンはシェルごとです-これは設計によるものです。
LJHarb 2017年

回答:


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 2018

シンボリックリンク/ usr / local / bin / nodeがあると、vscodeの統合端末に、本来表示されるべきではないノードのバージョンが表示されます。上記の手順に従ってシンボリックリンクを削除すると、問題が解決したようです。私のノードとnpmはnvmによって管理されています
Sudhanshu Mishra

これは完璧に動作します。ノードバージョンのプレフィックスを設定するのをお見逃しなく、これから使用します。 npm config set prefix $NVM_DIR/versions/node/<node-version-directory>
Hiren 2018

3
これは現在のウィンドウでのみ機能します。新しいシェルまたは新しいウィンドウを開いた場合は、最初からやり直す必要があります。
jtiscione

3
私はこれらを順番に行わなければなりません。1. nvm use --delete-prefix vx.xx --silent 2. npm config delete prefix 3. npm config set prefix $ NVM_DIR / versions / node / vx.xx
Guangtong Shen

66

私は同じ問題を抱えていて、実行npm config delete prefixしても助けにはなりませんでした。

しかし、これはしました:

brewを使用してnvmをインストールした後、~/.nvmディレクトリを作成します。
$ mkdir ~/.nvm

に次の行を追加します~/.bash_profile

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

~/.bashrcまたは~/.profileまたはに他のnvm関連コマンドがないことを確認してください~/.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メンテナ)は、brew経由でインストールした場合はサポートされません。それをアンインストールし、適切な方法、readmeのcurlスクリプトを使用してください。
LJHarb 2017年

3
curlスクリプトを使用してインストールしましたnvm。この答えは私にはうまくいきませんでした。
intcreator 2018年

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ノードをインストールしたら、それがコマンドでした。
ジェイク

31

これは、Nodeのローカルインストールと競合している可能性があります(以前に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

StackOverflowで5か月後、非常に啓発的なガイド付きヘルプツアーに参加することを検討してください。
ユンノシュ

このコードスニペットは問題を解決する可能性がありますが、説明を含めると、投稿の品質を向上させるのに役立ちます。あなたは将来の読者のための質問に答えていることを覚えておいてください、そしてそれらの人々はあなたのコード提案の理由を知らないかもしれません。また、コードと説明コメントを混同しないようにしてください。これにより、コードと説明の両方が読みにくくなります。
Filnor

「nvmをインストールできない後」それで、私の目標がnvmを使用することであるなら、私はこれをすべきではないのですか?
ジェイク

18

このエラーは、NVMインストールフォルダーのパスシンボリックリンクがある場合に発生する可能性があります

説明

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"

ありがとう!あなたの答えは、より視認性を持っている必要があります
ベン

いいえ。私はこのクレイジーなエラーを理解するために脳を焼きました。私に役立つ投稿は見つかりませんでした。私はその問題を解決するために一生懸命戦わなければならなかった。お手伝いさせていただきます。私の答えに投票して、より目立つようにしてください。
アンドレ・アヴェレール

私がエコーした$ NVM_DIRは "/Users/vijayshanker/.nvm"でした。 "export NVM_DIR =" / Users / vijayshanker / .nvm(and the rest) "をbashrcに入れてみましたが、まだ修正されず、苦労していました6時間、助けてくださいメモ:npmがインストールされていない、npmからノードをインストールしなかった
vijay shanker

1つの解決策は、.bashrcまたはコマンドラインでNVM_DIR = $(readlink -f "$ HOME / .nvm")をエクスポートすることです。これにより、$ HOME / .nvmからすべてのシンボリックリンクが削除され、実際のディレクトリのみが含まれるプレーンなフルパスがエクスポートされます。
Nimlar

10

私はhomebrew経由nvmnvmインストールされた、経由でインストールされたノードを使用しているときにこれに遭遇しました。私は実行して、それを解決しbrew uninstall nvmrm -rf $NVM_DIRその後、使用してNVMを再インストールし、公式のインストールスクリプトを、私は必要なノードのバージョンを再インストールします。

注:$NVM_DIRマウントしてシンボリックリンクも作成しました。私はそれを私のホームディレクトリに戻しました。


8

nvmがシンボリックリンクで適切に機能しないため、ホームディレクトリがどこかにマウントされている場合、問題になる可能性があります。$ 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

同じエラーメッセージが表示されますが、他の解決策があります。curl(install.sh)中に自動生成されたパスが一致しません。これを確認してください:

echo $NVM_DIR

私の場合:/var/www//.nvm。自動生成されたbashファイルに表示し、変更して置き換えます:(〜/ .bash_profile、〜/ .zshrc、〜/ .profile、または〜/ .bashrc)

取り替える

export NVM_DIR="$HOME/.nvm"

と(eg)

export NVM_DIR="$HOME.nvm"

同じコメントを付けるためにここに来ました:)私の場合、ユーザーを作成したときに、ホームを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すると、使用されている適切なノードのバージョンが表示されますが、runningを実行node -vすると別のバージョンが表示されます。ノードのバージョンを変更することができなくなりました。

私はそれを修正するためにnvmを完全にアンインストールして再インストールしました。私はhttps://github.com/creationix/nvm#manual-uninstallを実行してフォローしました

$ rm -rf "$NVM_DIR"

次に、my .zshrcを編集して、nvmに関連する行を削除しました。

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!OKでないコード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"

ところで、NVMを使用するには、curlまたはwgetを使用せずにコマンドを使用してくださいbrew。詳細については、Githubでこの問題のコメントを確認してください:855#issuecomment-146115434


でのインストールnvmnpmどうですか?
ドミトリザイツェフ2018

1
homebrewを介したnvmのインストールは正式に非推奨になり、いくつかの非互換性が原因で問題が発生します。公式の方法は、参照、カール/ wgetの使用することですgithub.com/creationix/nvm#install-script参照くださいgithub.com/creationix/nvm/issues/298#issuecomment-152255091が NVMインストールされるため、私の知る限りではサポートされませんNPM経由のインストールnpmなので、npmがnvmもインストールすると、エッジケースが発生する可能性があります。以前にリンクした問題でそれについて読むことができます。
Vadorequest

0

私はただ考えを持っています。シンボリックリンクを使用してエラーを解決しても、グローバルにインストールされたパッケージにプレフィックスを使用できます。 ln -s [your prefix path] [path in the '~/.nvm'] その場合、~/.nvmフォルダー内にシンボリックフォルダーがありますが、実際には、グローバルパッケージは[プレフィックスパス]に引き続きインストールされます。その後、エラーは再び表示されなくなり、nvm use **通常どおり使用できます。PS:それは私のために働いたmac。pps:グローバルにインストールされたパッケージを使用するには$PATH、npm binフォルダーに設定することを忘れないでください。


-2

注:
nvmを削除、削除、またはアンインストールするには、 次のことを試して$NVM_DIRください(通常は~/.nvm)フォルダーを削除するだけ
です。
rm -rf ~/.nvm

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.