wake-up-neo.net

nvm ist nicht kompatibel mit der "prefix" -Option von npm config:

Ich versuche, eine andere NodeJS-Version mit nvm auszuführen, bekomme aber folgende Fehlermeldung:

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

Ich habe mein Präfix absichtlich festgelegt, um Sudo npm zu vermeiden (siehe https://docs.npmjs.com/getting-started/fixing-npm-permissions ).

Gibt es eine Möglichkeit, nvm zu verwenden, ohne mein Präfix für global installierte Pakete zu verlieren?

126
Dmitri Zaitsev

Löschen Sie das Präfix und setzen Sie es zurück

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

Hinweis: Ändern Sie die Versionsnummer mit der in der Fehlermeldung angegebenen.

nvm ist nicht kompatibel mit der "prefix" -Option von npm config: derzeit Stellen Sie "/ usr/local" ein. Führen Sie "npm config delete prefix" oder "nvm use --delete-prefix v6.11.1 --silent" aus, um die Einstellung aufzuheben.


Credits an @gabfiocchi auf Github - "Sie müssen das nvm-Präfix überschreiben"

208
Mick

Ich hatte das gleiche Problem und die Ausführung von npm config delete prefix hat mir nicht geholfen.

Aber das tat:

Erstellen Sie nach der Installation von nvm mit brew das Verzeichnis ~/.nvm:
$ mkdir ~/.nvm 

und füge folgende Zeilen in ~/.bash_profile ein: 

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

(Stellen Sie sicher, dass Sie keinen anderen nvm-bezogenen Befehl in ~/.bashrc oder ~/.profile oder ~/.bash_profile haben.) 

Öffnen Sie ein neues Terminal und dieses Mal sollte keine Warnmeldung gedruckt werden.
Überprüfen Sie, ob nvm funktioniert, indem Sie den Befehl nvm --version ausführen.
Danach NodeJS mit nvm install node && nvm alias default node installieren/neu installieren. 

Mehr Info

Ich habe nvm mit homebrew installiert und danach erhielt ich diese Benachrichtigung:

Bitte beachten Sie, dass Upstream uns gebeten hat, explizite Verwaltung von nvm via Homebrew wird von ihnen nicht unterstützt, und Sie sollten alle .__ überprüfen. Probleme mit der Standardinstallationsmethode von nvm vor der Berichterstellung.

Sie sollten das Arbeitsverzeichnis von NVM erstellen, wenn es nicht vorhanden ist:

 mkdir ~/.nvm

Fügen Sie Folgendes zu ~/.bash_profile oder Ihrer gewünschten Shell hinzu Konfigurationsdatei:

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

Sie können $NVM_DIR an einen beliebigen Ort setzen, es bleibt jedoch unverändert bei /usr/local/Cellar/nvm/0.31.0 zerstört alle Installationen, die auf nvm-installierten Knoten installiert sind beim Upgrade/Neuinstallation.

Das Ignorieren brachte mich zu dieser Fehlermeldung:

nvm ist nicht mit der Option npm config "Präfix" kompatibel: derzeit auf "/usr/local/Cellar/nvm/0.31.0/versions/node/v5.7.1" eingestellt
Führen Sie nvm use --delete-prefix v5.7.1 --silent aus, um die Einstellung aufzuheben.

Ich folgte einer früheren Anleitung (von homebrew/nvm) und fand dann heraus, dass ich NodeJS neu installieren musste. So tat ich: 

nvm install node && nvm alias default node

und es wurde behoben.

Update: Die Verwendung von brew zur Installation von NVM führt zu einem langsamen Start des Terminals. Sie können dieser Anweisung folgen um sie zu lösen.

54
S.M.Mousavi

Dies kann ein Konflikt mit Ihrer lokalen Installation von Node sein (falls Sie diese zuvor über einen anderen Weg als NVM installiert hatten). Sie sollten diese Instanz des Knotens löschen:

  1. entferne node_modules Sudo rm -rf /usr/local/lib/node_modules
  2. knoten entfernen Sudo rm /usr/local/bin/node  
  3. knotenverbindung entfernen cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm

Nachdem Sie nvm nicht installieren können 

24
Healer

Ich bin auf dieses Problem gestoßen, als ich den über nvm installierten Knoten verwendet und nvm über Homebrew installiert hatte. Ich löste es, indem ich brew uninstall nvm, rm -rf $NVM_DIR ausführte, dann nvm mit dem offiziellen Installationsskript neu installierte und die Knotenversion neu installierte, die ich brauchte.

Hinweis: Ich hatte auch $NVM_DIR gemountet und symlinked. Ich zog es zurück in mein Homedir.

8
Lane Rettig

Es könnte das Problem sein, wenn Sie Ihr Home-Verzeichnis irgendwo gemountet haben, weil nvm mit Symlinks nicht richtig funktioniert. Da es mir egal ist, wo sich mein $ NVM_DIR befindet, führe ich das aus und alles funktioniert gut:

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

 enter image description here Ich hatte das gleiche Problem und es war jedes Mal wirklich nervig mit dem Terminal. Ich führe den Befehl zum Terminal und es wurde behoben

Für diejenigen, die versuchen, nvm vom Sud zu entfernen

es reicht möglicherweise nicht aus, einfach die Deinstallation von nvm durchzuführen

wenn das npm-Präfix immer noch/usr/local ist, führen Sie diesen Befehl aus

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

6

Lassen Sie mich meine Situation beschreiben.

Überprüfen Sie zunächst die aktuelle Konfiguration

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

Dann fand ich die Fehlerkonfiguration in der Ausgabe:

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

Also habe ich den C:\\Program Files\\nodejs in /mnt/c/Users/paul/.npmrc gelöscht.

1
Paul Han

Ich habe nur eine Idee. Verwenden Sie den symbolischen Link, um den Fehler zu beheben, und Sie können Ihr Präfix weiterhin für global installierte Pakete verwenden ln -s [your prefix path] [path in the '~/.nvm'] Sie haben dann einen symbolischen Ordner im Ordner ~/.nvm. Ihre globalen Pakete werden jedoch weiterhin installiert [Ihr Präfixpfad]. Dann wird der Fehler nicht mehr angezeigt und Sie können nvm use ** normalerweise verwenden Ps: Es hat für mich an mac. Pps gearbeitet: Vergessen Sie nicht, $PATH in Ihren Ordner npm bin zu setzen, um die global installierten Pakete zu verwenden.

0
XQi

Ich folgte https://stackoverflow.com/a/47861348/2391795 answer, aber es hat nicht gut funktioniert.

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

Nachdem ich die empfohlenen Befehle ausgeführt hatte, funktionierte mein nvm nicht mehr, und nvm use zeigte die richtige Version des Knotens an, aber node -v zeigte eine andere. Die Version des Knotens konnte nicht mehr geändert werden.

Ich habe nvm komplett deinstalliert und neu installiert, um das Problem zu beheben. Ich folgte https://github.com/creationix/nvm#manual-uninstall , indem ich lief 

$ rm -rf "$NVM_DIR"

Dann bearbeitete mein .zshrc, um die mit nvm zusammenhängenden Zeilen zu entfernen, die in meinem Fall waren

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"

Dann startete eine neue Shell (damit nvm nicht in diese neue Shell geladen wird) und lief https://github.com/creationix/nvm#install-script

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

Welches nvm hinzugefügt die Zeilen, die ich zuvor in meinem .zshrc entfernt hatte.

Dann konnte ich nvm wie gewohnt nutzen. Ich denke, das ist ein seltsamer Fall, in dem Dinge schief gelaufen sind und ich musste alles neu installieren. Es sieht nicht so aus, als würden die meisten Leute dies aufgrund dieses Problems durchmachen.

0
Vadorequest

Ich hatte dieses Problem, nachdem ich meinen Home-Ordner auf ein neues Laufwerk unter Linux verschoben hatte. Es wurde behoben, indem der .nvm-Ordner entfernt und nvm neu installiert wurde

0
Pablo Mescher

Das Problem wurde gerade behoben. Ich habe $HOME/.nvm mit dem $DEV_ZONE/env/node/nvm-Verzeichnis verknüpft. Ich war mit demselben Problem konfrontiert. Ich habe NVM_DIR in $HOME/.zshrc wie folgt ersetzt

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

BTW, bitte installieren Sie NVM mit dem Befehl curl oder wget und nicht mit brew. Weitere Informationen finden Sie in dieser Ausgabe von Github: - 855 # issuecomment-146115434 

0
Nur Rony

Ich habe nach einer Lösung für das nvm-Präfixproblem gesucht und diese Frage gefunden (bevor ich die Lösung fand). Hier ist meine Shell "Dialog". Ich hoffe, es kann für jemanden nützlich sein. Mit Hilfe dieses Beitrags konnte ich das Präfix festlegen: https://github.com/npm/npm/issues/6592

Als ich npm config delete prefix oder nvm use --delete-prefix vor der Verwendung von npm --prefix="" set prefix "" ausprobierte, erhielt ich nur: Npm ERR! nicht ok code 0

Beachten Sie, dass Sie dasselbe Verfahren mit jeder Knotenversion wiederholen müssen. Das Präfix wird nach der Installation auf (in meinem Fall)/usr/local zurückgesetzt. 

    $ 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