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
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
.
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.
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.
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
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
source ~/.profile
npm install -g awsmobile-cli
awsmobile configure
Ajoutez la ligne suivante à votre ~/.bash_profile
export PATH="$HOME/.npm/bin:$PATH"
Charger le profil bash
bash -l
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
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-links
dé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.