web-dev-qa-db-fra.com

Les modules du nœud global ne s'installent pas correctement. Commande non trouvée

J'ai des difficultés à installer des modules de nœud globaux et tout ce que je trouve en ligne indique que la solution consiste simplement à ajouter -g Ce qui n'est pas le problème Je crois que c'est un problème de lien ou de problème de répertoire. 

Voici ce que je fais:

$ npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.3
...downloads correctly

$ express myapp
bash: express: command not found

Cependant, lorsque je lance l'emplacement du lien direct pour l'exprimer, cela fonctionne:

   $ /usr/local/share/npm/bin/express myapp

   create : myapp
   create : myapp/package.json
   create : myapp/app.js
... Builds app correctly

Où le module est: 

$ which node
/usr/local/bin/node
$ node -pe process.execPath
/usr/local/Cellar/node/0.8.20/bin/node
$ npm link express
/Users/bentonrr/Development/Personal/node_modules/express -> /usr/local/share/npm/lib/node_modules/express

Dans mon .bash_profile j'ai:

export PATH=/usr/local/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node

Dois-je modifier mon environnement de nœud pour pouvoir télécharger dans le bon dossier? Quelque chose ne se lie pas correctement? Je suis perdu.. 

Merci!

Autres spécifications:

$ node --version
v0.8.20
$ npm --version
1.2.11
$ brew --version
0.9.4
OSX Version 10.8.2
46
im_benton

Ajoutez /usr/local/share/npm/bin à votre PATH (par exemple, dans .bashrc).

Pour plus d'informations, voir npm help npm:

mode global: npm installe les packages dans le préfixe d’installation à l’aide du préfixe/lib/node_modules.

Vous pouvez trouver le préfixe d'installation avec npm get prefix ou npm config list | grep prefix.

46
Tim Smith

Cela peut signifier que votre préfixe d'installation de noeud n'est pas ce que vous attendez.

Vous pouvez le définir comme suit:

npm config set prefix /usr/local

puis essayez à nouveau d'exécuter npm install -g, et cela devrait fonctionner. A travaillé pour moi sur un mac, et la solution provient de ce site:

http://webbb.be/blog/command-not-found-node-npm/

EDIT: Notez que je viens de retrouver ceci sur un nouveau Mac que je configure et que je devais effectuer le processus détaillé ici sur stackoverflow aussi.

86
Brad Parks

Je n'ai jamais installé aucun logiciel NPM, via Sudo! J'ai mes propres raisons, mais j'essaie simplement de garder les choses simples, et basées sur les utilisateurs, puisqu'il s'agit d'un monde de développement utilisateur, et que tout le monde n'a pas d'accès root, et que root/Sudo installer des choses comme celle-ci semble encombrer le début avec. Après tout, tous les développeurs devraient pouvoir suivre ces instructions, pas seulement les utilisateurs privilégiés de Sudo.

Ce système particulier est un RHEL7 accessible via SSH: 

Il est fréquent que plusieurs versions du noeud soient nécessaires. J'utilise donc NVM https://github.com/creationix/nvm

Cela dit, je peux vous montrer un exemple de travail pour les installations globales de -g à l’aide de NVM, NPM et des chemins de nœud sans racine. 

définissez votre préfixe pour .npm-packages s'il ne l'est pas déjà. (note, c'est un trait d'union, pas un trait de soulignement)

nvm config ls
prefix = "/home/<yourusername>/.npm-packages"

Puis ajustez votre ~/.bash_profile ou .bashrc si vous préférez lisez sur pourquoi et qui ici , avec les informations suivantes. 

#PATH EXPORTS
NODE_MODULES=$HOME/.npm                                          
NPM_PACKAGES=$HOME/.npm-packages/bin                           
export PATH=$PATH:$HOME/bin:$NODE_MODULES:$NPM_PACKAGES         

#NVM ENABLE                                                 
export NVM_DIR="$HOME/.nvm"                                   
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm 

Cela couvre à peu près tous les chemins. Par exemple, si vous installez gulp comme ceci npm install -g gulp, il crée un lien symbolique dans ~/.npm-packages/bin (remarque: un trait d'union, pas un trait de soulignement). (pas besoin de gulp-cli ou gulp-cl)

Vous pouvez pratiquement remplacer/commenter toutes les autres exportations de chemin de nœud. Vous pouvez mettre cette information de chemin en dessous de toute autre information de chemin que vous avez déjà, en toute sécurité, sans que cela écrase ces informations. 

4
blamb

Mon NPM n'a pas pu trouver de paquets globaux. J'ai fait ce que Brad Parks a suggéré:

npm config set prefix /usr/local

Ensuite, j'ai eu une erreur d'autorisations EACCES (NE PAS UTILISER Sudo npm install -g) et je l'ai corrigée via la documentation officielle de npm: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing -packages-globally

  1. Sur la ligne de commande, dans votre répertoire de base, créez un répertoire pour les installations globales:
 mkdir ~/.npm-global
  1. Configurez npm pour utiliser le nouveau chemin de répertoire:
 npm config set prefix '~/.npm-global'
  1. 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
  1. Sur la ligne de commande, mettez à jour vos variables système:
 source ~/.profile
  1. Ensuite, installez un paquet globalement et testez-le! Par exemple:
npm install -g awsmobile-cli
awsmobile configure

0
Vicente
  1. Ajoutez la ligne suivante à votre ~/.bash_profile

    export PATH="$HOME/.npm/bin:$PATH"
    
  2. Charger le profil bash

    bash -l
    
0
Lasithds

Dans mon cas, la variable d'environnement NODE_PATH était vide. Vérifiez si c'est vide-

echo $NODE_PATH

si NODE_PATH est vide. Puis changez ~/.bash_profile et ajoutez NODE_PATH

nano ~/.bash_profile
export NODE_PATH=`npm root -g`
source ~/.bash_profile

Maintenant, installez à nouveau les modules npm et vérifiez s’il est installé sur le chemin npm root -g

0
lazyTank

Le problème que j'ai eu était manquant les fichiers binaires parce que le fichier spécifique à l'utilisateur .npmrc de mon répertoire personnel avaitbin-linksdéfini sur false, bien que le default is true.

Au cas où ce soit votre problème, vérifiez qu’aucun de vos fichiers .npmrc ne l’a défini sur false.

Ensuite, la réinstallation de tous les modules créera les fichiers binaires à la prefix afin que votre PATH puisse les voir.

0
dimpen