web-dev-qa-db-fra.com

nvm n'est pas compatible avec l'option "préfixe" de npm config:

J'essaie d'exécuter une autre version de NodeJS avec nvm mais j'obtiens cette erreur:

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

Mon préfixe est défini exprès pour éviter Sudo npm (voir https://docs.npmjs.com/getting-started/fixing-npm-permissions ).

Puis-je utiliser nvm sans perdre mon préfixe pour les packages installés globalement?

126
Dmitri Zaitsev

Supprimer et réinitialiser le préfixe

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

Remarque: Modifiez le numéro de version avec celui indiqué dans le message d'erreur.

nvm n'est pas compatible avec l'option "préfixe" de npm config: actuellement définir sur "/ usr/local" Exécuter "npm config delete prefix" ou "nvm use --delete-prefix v6.11.1 --silent" pour le désactiver.


Crédits à @gabfiocchi sur Github - "Vous devez écraser le préfixe nvm"

208
Mick

J'ai eu le même problème et l'exécution de npm config delete prefix ne m'a pas aidé.

Mais cela a:

Après avoir installé nvm avec brew, créez le répertoire ~/.nvm:
$ mkdir ~/.nvm 

et ajoutez les lignes suivantes dans ~/.bash_profile

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

(Vérifiez que vous n'avez aucune autre commande liée à nvm dans aucun ~/.bashrc ou ~/.profile ou ~/.bash_profile

Ouvrez un nouveau terminal et cette fois, il ne devrait pas imprimer de message d’avertissement.
Vérifiez que nvm fonctionne en exécutant la commande nvm --version.
Après cela, installez/réinstallez NodeJS en utilisant nvm install node && nvm alias default node

Plus d'informations

J'ai installé nvm en utilisant homebrew et après cela, j'ai reçu cette notification:

Veuillez noter qu'en amont nous a demandé de rendre explicite la gestion nvm via Homebrew n’est pas pris en charge par ces derniers et vous devez cocher la case problèmes par rapport à la méthode d’installation standard nvm avant la génération de rapports.

Vous devriez créer le répertoire de travail de NVM s'il n'existe pas:

 mkdir ~/.nvm

Ajoutez les éléments suivants à ~/.bash_profile ou à votre shell souhaité fichier de configuration:

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

Vous pouvez définir $NVM_DIR à n’importe quel emplacement, mais le laisser inchangé par rapport à /usr/local/Cellar/nvm/0.31.0 détruira toutes les installations de nœuds installées par nvm lors de la mise à niveau/réinstallation.

L'ignorer m'a amené à ce message d'erreur:

nvm n'est pas compatible avec l'option npm config "préfixe": actuellement définie sur "/usr/local/Cellar/nvm/0.31.0/versions/node/v5.7.1"
Exécutez nvm use --delete-prefix v5.7.1 --silent pour le désélectionner.

J'ai suivi un guide précédent (à partir de homebrew/nvm) et après cela, j'ai découvert que je devais réinstaller NodeJS. Alors j'ai fait: 

nvm install node && nvm alias default node

et c'était réparé.

Update: L'utilisation de brew pour installer NVM ralentit le démarrage du terminal. Vous pouvez suivez cette instruction pour la résoudre.

54
S.M.Mousavi

Cela peut être un conflit avec votre installation locale de Node (si vous l'aviez déjà installée par un autre moyen que NVM). Vous devez supprimer cette instance de noeud:

  1. supprimer node_modules Sudo rm -rf /usr/local/lib/node_modules
  2. enlever le noeud Sudo rm /usr/local/bin/node  
  3. supprimer le lien de noeud cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm

Après avoir installé nvm 

24
Healer

Je me suis heurté à cela en utilisant un noeud installé via nvm, avec nvm installé via homebrew. Je l'ai résolu en exécutant brew uninstall nvm, rm -rf $NVM_DIR, puis en réinstallant NVM à l'aide du script d'installation officiel et en réinstallant la version du noeud dont j'avais besoin.

Note: J'ai aussi eu $NVM_DIR monté et lié symboliquement. Je l'ai remis dans mon homedir.

8
Lane Rettig

Cela pourrait être le problème si votre répertoire personnel est monté quelque part, car NVM ne fonctionne pas correctement avec les liens symboliques. Parce que je me fiche de l'endroit où se trouve mon $ NVM_DIR, je lance ceci et tout fonctionne correctement:

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

 enter image description here J'ai eu le même problème et c'était vraiment énervant à chaque fois avec le terminal. Je lance la commande au terminal et tout a été corrigé

Pour ceux qui essaient de retirer le NVM de la bière

il se peut que cela ne soit pas suffisant pour lancer la désinstallation de nvm

si vous voyez que le préfixe npm est toujours/usr/local, exécutez cette commande

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

6

Permettez-moi de décrire ma situation.

Tout d'abord, vérifiez la configuration actuelle

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

Ensuite, j'ai trouvé l'erreur config dans la sortie:

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

J'ai donc supprimé le C:\\Program Files\\nodejs dans /mnt/c/Users/paul/.npmrc.

1
Paul Han

J'ai juste une idée. Utilisez le lien symbolique pour résoudre l’erreur et vous pouvez toujours utiliser votre préfixe pour les packages installés globalement . ln -s [your prefix path] [path in the '~/.nvm'] Alors vous aurez un dossier symbolique dans le dossier ~/.nvm, mais en fait, vos packages globaux sont toujours installés dans [votre chemin de préfixe]. Ensuite, l'erreur ne s'affichera plus et vous pouvez utiliser nvm use ** normalement . Ps: cela fonctionne pour moi sur mac. Pps: n'oubliez pas de définir $PATH dans votre dossier npm bin pour utiliser les packages installés globalement.

0
XQi

J'ai suivi https://stackoverflow.com/a/47861348/2391795 réponse mais cela n'a pas bien fonctionné.

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

Après avoir exécuté les commandes recommandées, mon nvm ne fonctionnait plus, exécuter nvm use afficherait la version de noeud appropriée, mais exécuter node -v en afficherait une autre. Il n'était plus possible de changer la version du noeud.

J'ai désinstallé et réinstallé NVM entièrement pour le réparer. J'ai suivi https://github.com/creationix/nvm#manual-uninstall en cours d'exécution 

$ rm -rf "$NVM_DIR"

Puis modifié mon .zshrc pour supprimer les lignes relatives à nvm, qui dans mon cas étaient

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"

Puis un nouveau shell a été démarré (afin que nvm ne soit pas chargé dans ce nouveau shell) et a lancé https://github.com/creationix/nvm#install-script

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

Qui a ajouté nvm les lignes que j'avais précédemment supprimées dans mon .zshrc.

Ensuite, j'ai pu utiliser NVM comme je le faisais. Je suppose que c'est un cas étrange où les choses se sont mal passées et m'ont obligé à tout réinstaller, cela ne ressemble pas à la plupart des gens qui vivent cela à cause de ce problème.

0
Vadorequest

J'ai eu ce problème après avoir déplacé mon dossier personnel sur un nouveau disque sous Linux. Il a été résolu en supprimant le dossier .nvm et en réinstallant nvm.

0
Pablo Mescher

Juste résolu le problème. J'ai lié symboliquement $HOME/.nvm au répertoire $DEV_ZONE/env/node/nvm. Je faisais face au même problème. J'ai remplacé NVM_DIR dans $HOME/.zshrc comme suit

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

BTW, installez NVM à l’aide des commandes curl ou wget et non pas de brew. Pour plus d’informations, consultez le commentaire de ce numéro sur Github: 855 # issuecomment-146115434 

0
Nur Rony

Je cherchais une solution au problème de préfixe nvm et a trouvé cette question (avant de trouver la solution). Voici mon "dialogue" Shell. J'espère que cela peut être utile pour quelqu'un. J'ai pu configurer préfixe avec l'aide de ce post: https://github.com/npm/npm/issues/6592

Quand j'ai essayé npm config delete prefix ou nvm use --delete-prefix avant d'utiliser npm --prefix="" set prefix "", je n'ai eu que: Npm ERR! pas ok code 0

Notez que vous devrez répéter la même procédure avec chaque version de noeud. Le préfixe est défini sur (dans mon cas)/usr/local après l'installation. 

    $ 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