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
を使うことができる方法はありますか?
プレフィックスを削除してリセットする
$ 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を上書きする必要があります"
私は同じ問題を抱えていたので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のインストールがすべて破壊されます。
無視すると、このエラーメッセージが表示されます。
nvm
はnpm 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を使うとターミナルの起動が遅くなります。あなたは この指示に従う 解決することができます。
これはあなたのローカルにインストールされたNodeと競合しているかもしれません(過去にNVM以外の方法でインストールした場合)このノードのインスタンスを削除する必要があります。
- node_modulesを削除します。
Sudo rm -rf /usr/local/lib/node_modules
- ノードを削除
Sudo rm /usr/local/bin/node
- ノードリンクを削除します
cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm
Nvmをインストールできない
nvm
経由でインストールされたノードを使用しているときに、homebrew経由でインストールされたnvm
でこれに遭遇しました。 brew uninstall nvm
、rm -rf $NVM_DIR
を実行し、 公式インストールスクリプト を使用してnvmを再インストールし、必要なノードバージョンを再インストールすることで解決しました。
注:$NVM_DIR
もマウントされ、シンボリックリンクされました。 homedirに戻しました。
ホームディレクトリがどこかにマウントされていると、問題が発生する可能性があります。これは、nvmがシンボリックリンクでは正しく機能しないためです。私は自分の$ NVM_DIRがどこにあるのか気にしないのでこれを実行してもすべてうまくいきます:
$ mv ~/.nvm /tmp/
$ export NVM_DIR="/tmp/.nvm"
$ nvm use --delete-prefix v6.9.1
私は続きました 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を使うことができました。物事がうまくいかずすべてを再インストールしなければならなかったのは奇妙なケースだと思いますが、この問題のせいでほとんどの人がこれを経験したようには見えません。
私の状況を説明しましょう。
まず、現在の設定を確認してください
$ 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
を削除しました。
私はただ考えを持っています。シンボリックリンクを使用してエラーを解決しても、グローバルにインストールされたパッケージのプレフィックスを使用できます。 ln -s [your prefix path] [path in the '~/.nvm']
すると、~/.nvm
フォルダ内にシンボリックフォルダが作成されますが、実際には、グローバルパッケージはまだ[your prefix path]にインストールされています。そうすればエラーは二度と表示されず、nvm use **
を普通に使うことができます。 ps:それは私にとってmac
でうまくいきました。 pps:グローバルにインストールされたパッケージを使うために$PATH
をあなたのnpm bin
フォルダに設定することを忘れないでください。
私のホームフォルダをLinuxの新しいドライブに移動した後、この問題が発生しました。それは.nvmフォルダを削除し、nvmを再インストールすることで修正されました
問題を解決しました。 $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
私は(解決策を見つける前に)この問題を見つけた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