web-dev-qa-db-ja.com

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

nvmで別のNodeJSバージョンを実行しようとしていますが、このエラーが発生します。

$ 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を使うことができる方法はありますか?

146
Dmitri Zaitsev

プレフィックスを削除してリセットする

$ 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 prefixを上書きする必要があります"

255
Mick

私は同じ問題を抱えていたので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 --versionコマンドを実行して、nvmが動作していることを確認してください。
その後、nvm install node && nvm alias default nodeを使用してNodeJSをインストール/再インストールします。

詳しい情報

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がインストールしたNodeのインストールがすべて破壊されます。

無視すると、このエラーメッセージが表示されます。

nvmnpm configの "prefix"オプションと互換性がありません:現在は"/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

そしてそれは修正されました。

更新:NVMをインストールするのにbrewを使うとターミナルの起動が遅くなります。あなたは この指示に従う 解決することができます。

55
S.M.Mousavi

これはあなたのローカルにインストールされた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をインストールできない

28
Healer

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

注:$NVM_DIRもマウントされ、シンボリックリンクされました。 homedirに戻しました。

9
Lane Rettig

ホームディレクトリがどこかにマウントされていると、問題が発生する可能性があります。これは、nvmがシンボリックリンクでは正しく機能しないためです。私は自分の$ NVM_DIRがどこにあるのか気にしないのでこれを実行してもすべてうまくいきます:

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

enter image description here 私は同じ問題を抱えていました、そしてそれは本当に端末で毎回迷惑でした。私は端末にコマンドを実行し、それが修正されました

そのためには、brewからnvmを削除してみてください。

それはちょうどアンインストールnvmを醸造するのに十分ではないかもしれません

npmプレフィックスがまだ/ usr/localであることがわかる場合は、このコマンドを実行してください。

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

6

私は続きました https://stackoverflow.com/a/47861348/2391795 答え、それはうまくいきませんでした。

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

推奨コマンドを実行した後、my nvmが動作しなくなりました。nvm useを実行すると、使用されている正しいノードバージョンが表示されますが、node -vを実行すると別のバージョンが表示されます。ノードのバージョンを変更することはもうできませんでした。

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

$ rm -rf "$NVM_DIR"

それから私の.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

これは私が以前私の.zshrcで削除した行をnvm追加したものです。

それから私は以前のようにnvmを使うことができました。物事がうまくいかずすべてを再インストールしなければならなかったのは奇妙なケースだと思いますが、この問題のせいでほとんどの人がこれを経験したようには見えません。

1
Vadorequest

私の状況を説明しましょう。

まず、現在の設定を確認してください

$ 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"

だから、私は/mnt/c/Users/paul/.npmrcのC:\\Program Files\\nodejsを削除しました。

1
Paul Han

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

0
XQi

私のホームフォルダをLinuxの新しいドライブに移動した後、この問題が発生しました。それは.nvmフォルダを削除し、nvmを再インストールすることで修正されました

0
Pablo Mescher

問題を解決しました。 $HOME/.nvm$DEV_ZONE/env/node/nvmディレクトリにシンボリックリンクしました。私は同じ問題に直面していました。私はNVM_DIR$HOME/.zshrcを次のように置き換えました。

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

ところで、curlを使用せずにwgetまたはbrewコマンドを使用してNVMをインストールしてください。詳しくはGithubのこの号のコメントをチェックしてください。855#issuecomment-146115434

0
Nur Rony

私は(解決策を見つける前に)この問題を見つけた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
vSurfer