sudo: npm: commande introuvable


202

J'essaie de passer à la dernière version de node. Je suis les instructions sur http://davidwalsh.name/upgrade-nodejs

Mais quand je fais:

sudo npm install -g n

Je reçois l'erreur:

sudo: npm: command not found

npm fonctionne sans sudo. Quand je fais:

whereis node

Je vois:

node: /usr/bin/node /usr/lib/node /usr/bin/X11/node /usr/local/node

Fonctionnement:

which npm

Spectacles:

/usr/local/node/bin/npm

J'ai essayé la solution sur https://stackoverflow.com/a/5062718/1246159

Mais je reçois toujours la même erreur. J'ai également regardé le fichier / etc / sudoers et la ligne appropriée est:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Cela me va bien. Comment puis-je faire fonctionner NPM avec la commande sudo?


4
Est-ce que ça marche? sudo /usr/bin/npm install -g n
robertklep

2
Pouvez-vous essayer de réinstaller le nœud? Il semble que vous ayez supprimé npm.
Jeff Sloyer

1
Vous avez peut-être ajouté /usr/local/node/binà votre $PATH, mais npmvous devez l'installer dans /usr/local/bin. Le premier répertoire n'est pas dans secure_pathce qui explique pourquoi sudone le trouve pas.
robertklep

1
Utilisation nvmsur Ubuntu ici - avec le commentaire @robertklep, j'ai essayé sudo /home/${user}/.nvm/version/node/${version}/bin/npm installet cela a fonctionné.
Stav Pan Geffen

2
Il a résolu mon problème en réinstallant à partir du package suivant. nodejs.org/en/download
Marghoob Suleman

Réponses:


125

Le fichier npm doit être dans /usr/local/bin/npm. Si ce n'est pas le cas, réinstallez node.js avec le package sur leur site Web . Cela a fonctionné dans mon cas.


THX. Si vous installez le noeud dans d'autres lecteurs de données, où os n'est pas installé, vous ne pouvez pas trouver ce chemin.
Hardik Darji

1
dans le cas de mac os avec homebrew .. deux étapes à faire est de (1) quel nœud (2) quel npm qui devrait être à la fois dans / usr / local / bin (où homebrew installe / symlinks node + npm) ... pour résoudre .. essayez (1) brew doctor (2) brew réinstaller le nœud si ses problèmes donnent toujours .. vérifiez votre chemin (echo $ PATH). vous devez avoir plusieurs emplacements de bacs qui pointent vers diverses installations de nœuds ... si c'est le cas ... nettoyer (comme pour le rendre plus propre) votre ~ / .bashrc / ~ / .bash_profile, donc / usr / local / bin est là chargé sans qu'un autre ne pointe vers une installation de nœud aléatoire.
Jimmy MG Lim

3
Ceci est une solution partielle. Le problème se produit lorsque vous installez manuellement le nœud. Vous devez créer un lien logiciel pour chaque binaire installé dans / usr / bin ou / usr / local / bin. La définition du chemin dans le bashrc de root ne fonctionnera pas car il n'est pas lu pendant sudo, c'est donc la seule façon qu'il semble, sauf si vous installez le package.
shrimpwagon

comme l'a dit @shrimpwagon, le bas des instructions manuelles vous dit de lier "sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / node / usr / bin / node sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npm / usr / bin / npm sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npx / usr / bin / npx "
James Nelson

170

je devais faire

sudo apt-get install npm

cela a fonctionné pour moi.


6
Il est difficile de comprendre ce que vous voulez exprimer.
minuscule lumière du soleil

4
C'est obsolète. Ce qui a fonctionné pour moi, ce sont les commandes que j'ai trouvées ici: github.com/nodesource/distributions#debinstall # Utilisation d'Ubuntu curl -sL deb.nodesource.com/setup_5.x | sudo -E bash - sudo apt-get install -y nodejs # Utilisation de Debian, en tant que root curl -sL deb.nodesource.com/setup_5.x | bash - apt-get install -y nodejs
Hamed

4
@tinysunlight Je ne sais pas ce qui n'est pas clair. L'op dit que la commande npm est manquante. Cette commande installe la commande npm.
Velocibadgery

7
Ce n'est pas la bonne réponse à la question car elle est évidente à partir de l'op qui npmest déjà installé mais pas accessible lorsqu'il est appelé via sudo. Avec cette solution, vous réinstallez npm qui existe déjà. Il s'agit de combattre les symptômes plutôt que d'en trouver la cause. Je comprends que cela pourrait corriger des choses cassées pour certaines personnes, mais c'est trompeur, debout comme ça.
Dominic

4
Lorsque j'ai installé le nœud à l'aide de NVM sur Ubuntu 18.10, sudo ne reconnaît pas npm comme une commande. sudo apt-get install npmtravaillé pour moi.
AlienKevin

91

Pour les utilisateurs MAC, les étapes suivantes ont fonctionné pour moi.

$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall 

5
Le brew uninstall noden'a pas fonctionné pour moi, mais je portais avec le brew install nodeet brew postinstallet le problème résolu. Merci
Trevor

2
Que fait brew postinstallexactement?
Oliver D

dans la version 2.2.14 de Homebrew brew postinstallest redondant
Arslan Khan

63

J'ai eu le même problème; voici les commandes pour y remédier:

  • sudo ln -s /usr/local/bin/node /usr/bin/node
  • sudo ln -s /usr/local/lib/node /usr/lib/node
  • sudo ln -s /usr/local/bin/npm /usr/bin/npm
  • sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

2
A travaillé pour moi sur CentOS 7
hirikarate

4
A travaillé pour moi Ubuntu 16.04.1 LTS. J'utilise NVM donc le premier chemin était vers l'endroit où NVM a installé le nœud et npm (le chemin inclut une version %HOME%/.nvm/versions/node/v7.4.0/bin/npm). Malheureusement, je devrai référencer cette réponse chaque fois que je mettrai à jour à l'aide de NVM en raison de la façon dont la version du chemin va changer
kas

1
Cela m'a aussi résolu! Publié à l'origine sur Stack Overflow: Sur EC2: commande sudo node introuvable, mais le nœud sans sudo est ok
Dominic

2
@kas sudo ln -s $(whereis node) /usr/bin/node Et ainsi de suite. dans votre profil bash.
Aravind Voggu

A travaillé pour moi dans l'instance AWS ec2.
Chirag Purohit

26

AVERTISSEMENT (modifier)

Faire un chmod 777est une solution assez radicale. Essayez-les d'abord, un à la fois, et arrêtez-vous lorsque vous travaillez:

  • $ sudo chmod -R 777 /usr/local/lib/node_modules/npm
  • $ sudo chmod -R 777 /usr/local/lib/node_modules
  • $ sudo chmod g+w /usr/local/lib
  • $ sudo chmod g+rwx /usr/local/lib

$ brew postinstall node est la seule partie d'installation où j'aurais un problème

Permission denied - /usr/local/lib/node_modules/npm/.github

Donc je

// !! READ EDIT ABOVE BEFORE RUNNING THIS CODE !!
$ sudo chmod -R 777 /usr/local/lib
$ brew postinstall node

et alto, npm est maintenant lié

$ npm -v
3.10.10

Supplémentaire

Si vous avez utilisé -R 777sur lib, ma recommandation serait de définir les fichiers et répertoires imbriqués sur un paramètre par défaut:

  • $ find /usr/local/lib -type f -print -exec chmod 644 {} \;
  • $ find /usr/local/lib -type d -print -exec chmod 755 {} \;
  • $ chmod /usr/local/lib 755

3
@Jacksonkr ..... venez-vous de recommander chmoding 777 tout le dossier local / lib?
sfratini

Quel chmoddevrait être ce répertoire?
tim_xyz

1
@tim_xyz drwxr-xr-xsont les valeurs par défaut de lib. Cela dit, n'utilisez PAS la fonction récursive -Rlors de la restauration du dossier.
Jacksonkr

Merci! sudo chmod -R 777 / usr / local / lib / node_modules a fonctionné pour moi
Hisagr


8

Pour les utilisateurs de CentOS, cela fonctionne pour moi:

sudo yum install npm

1
le problème avec cette approche est que dans Fedora par exemple, il est très obsolète dans les dépôts dnf / yum
ACV

2
Sur CentOS 7, vous devez d'abord activer le repo EPEL:yum install epel-release; yum install npm
hudolejev

8

Afin d'installer les packages npm globalement avec l'autorisation sudo, /usr/bin/npmdevrait être disponible. S'il npmexiste sur un autre répertoire, créez un lien logiciel comme:

sudo ln -s /usr/local/bin/npm /usr/bin/npm

Il fonctionne sur Fedora 25, node8.0.0 et npm5.0.0


6

Sur macOS, cela a fonctionné pour moi:

brew reinstall node

1
Désolé, je viens de remarquer que la question est étiquetée unix, mais cela pourrait toujours être utile car c'est le meilleur résultat de recherche Google pour "commande macos npm introuvable"
friederbluemle

5

Pour debian après l'installation du nœud, entrez

curl -k -O -L https://npmjs.org/install.sh    
ln -s /usr/bin/nodejs /usr/bin/node  
sh install.sh

5

Si vous avez installé node / npm avec nvm, le fichier de configuration de l'environnement nvm doit être exécuté avant de pouvoir utiliser l'un ou l'autre des packages.

Cela se trouve généralement dans ~ / .nvm / nvm.sh.

Pour l'exécuter automatiquement, incluez:

source ~/.nvm/nvm.sh

dans le fichier .bash_profile pour votre utilisateur

Si vous souhaitez ensuite utiliser sudo avec cet utilisateur, assurez-vous d'inclure le paramètre -i pour que sudo définisse l'environnement utilisateur. par exemple

sudo -iu jenkins npm install grunt-cli

4

réinstallez simplement.

Sur RHEL, CentOS et Fedora

sudo yum remove nodejs npm
sudo dnf remove nodejs npm   [On Fedora 22+ versions]

puis

yum -y install nodejs npm
dnf -y install nodejs npm   [On Fedora 22+ versions]

facile! .. le nœud et le npm fonctionnent maintenant comme un charme!


3

J'ai résolu ce problème en

apt-get install npm2deb

1
quelle est cette réponse? npm2deb est une 3e partie
Beau Bouchard

1
il n'est pas entièrement «fiable» car dans une tierce partie, il est plus probable qu'il soit compromis qu'à partir de npm directement depuis la source. je ne sais rien de npm2deb mais pensez que si vous vouliez l'utiliser dans votre entreprise, ils seraient probablement stricts sur l'audit
Kyle Calica-St

C'est évident pour tout le monde.
Игорь Демянюк

1

J'ai eu le même problème, la raison en était que le gestionnaire de paquets npm n'a pas été installé lors de l'installation du nœud. Cela était dû à l'erreur suivante: Dans le processus d'installation, il existe une étape appelée "Configuration personnalisée", vous avez ici la possibilité de choisir l'une des options suivantes: 1) Runtime Node.js (sélectionné par défaut). 2) Gestionnaire de paquets npm 3) Raccourcis de documentation en ligne. 4) Ajouter au chemin. Si vous continuez tel quel, le gestionnaire de paquets npm ne sera pas installé et vous obtiendrez donc l'erreur.

Solution: sélectionnez le gestionnaire de packages npm lorsque vous obtenez ces options. Cela a fonctionné pour moi.


1

Si vous avez téléchargé le package de nœuds et extrait quelque part comme /optvous pouvez simplement créer un lien symbolique à l'intérieur /usr/local/bin.

/usr/local/bin/npm -> /opt/node-v4.6.0-linux-x64/bin/npm
/usr/local/bin/node -> /opt/node-v4.6.0-linux-x64/bin/node

1

J'ai également eu le même problème dans Homestead et j'ai essayé de nombreuses façons. J'ai essayé avec

sudo apt-get install nodejs

J'obtiens l'erreur suivante:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi (>= 0.3.0-2) but it is not going to be installed
       Depends: node-ansi-color-table but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 3.0.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-underscore but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Enfin j'ai essayé avec

sudo apt-get dist-upgrade

Cela a bien fonctionné.

root@homestead:/usr/local/bin# npm -v
3.10.10

root@homestead:/usr/local/bin# node -v
v6.13.0


1

Travaillez pour moi Résolution des erreurs d'autorisation EACCES lors de l'installation des packages à l'échelle mondiale

Pour minimiser le risque d'erreurs d'autorisation, vous pouvez configurer npm pour utiliser un répertoire différent. Dans cet exemple, vous allez créer et utiliser un répertoire caché dans votre répertoire personnel.

Faites des sauvegardes de votre ordinateur. Sur la ligne de commande, dans votre répertoire personnel, créez un répertoire pour les installations globales:

 mkdir ~/.npm-global

Configurez npm pour utiliser le nouveau chemin de répertoire:

 npm config set prefix '~/.npm-global'

Dans votre éditeur de texte préféré, ouvrez ou créez un fichier ~ / .profile et ajoutez cette ligne:

 export PATH=~/.npm-global/bin:$PATH

Sur la ligne de commande, mettez à jour vos variables système:

 source ~/.profile

Pour tester votre nouvelle configuration, installez un package globalement sans utiliser sudo:

 npm install -g jshint

Cela a très bien fonctionné et économisé beaucoup de tracas!
Sumomo Il y a

0

Chemin binaire npm ajouté au chemin sudo en utilisant visudo et en éditant "secure_path"

Maintenant, "sudo npm" fonctionne


0

Supprimer complètement le nœud:

  brew uninstall --force node

Réinstallez:

brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules'

0

Au cas où cela pourrait être utile pour quiconque utilise des rh-*packages, cela a fonctionné pour moi:

sudo ln -s /opt/rh/rh-nodejs8/root/usr/bin/npm /usr/local/bin/npm

0

Depuis que j'ai installé node.js en utilisant le fichier .tar disponible sur node.js, j'ai dû mettre l'emplacement du répertoire node sur:

~ / .bashrc

de root en passant de l'utilisateur normal à root en utilisant la commande:

sudo -i

puis j'ai dû ajouter le chemin d'accès au nœud où je l'ai extrait dans le fichier .bashrc comme ci-dessous: entrez la description de l'image ici

puis renommez .bashrc en utilisant

. ~ / .bashrc

après

npm: command not found

parti


0

Pour moi, aucune des méthodes mentionnées ci-dessus en utilisant Homebrew ne fonctionnait sur macOS. J'ai donc désinstallé le nœud à l'aide de Homebrew et téléchargé le package de nœuds à partir de https://nodejs.org/en/download/ et l' ai installé. Ça a marché comme sur des roulettes.


-8

Installez node.js et exécutez simplement

npm install -g bower 

depuis le répertoire de votre projet

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.