J'ai écrit un module que j'ai publié pour NPM il y a un moment (https://npmjs.org/package/wisp)
Donc, il installe bien à partir de la ligne de commande:
$ npm i -g wisp
Cependant, lorsque je le lance à partir de la ligne de commande, j'obtiens toujours le message d'erreur qu'optimist n'est pas installé:
$ wisp
Error: Cannot find module 'optimist'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.<anonymous> (/usr/local/lib/node_modules/wisp/wisp:12:10)
at Object.<anonymous> (/usr/local/lib/node_modules/wisp/wisp:96:4)
at Module._compile (module.js:449:26)
at Object.exports.run (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:68:25)
at compileScript (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:135:29)
at fs.stat.notSources.(anonymous function) (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:110:18)
Cependant, j'ai spécifié dans package.json comme dépendance:
{
"name": "wisp",
"author": "Brendan Scarvell <[email protected]>",
"version": "0.1.0",
"description": "Global nodejs file server",
"dependencies": {
"optimist": "~0.3.4"
},
"repository": "git://github.com/tehlulz/wisp",
"bin": {
"wisp" : "./wisp"
}
}
Est-ce que quelqu'un sait quoi faire pour que ça fonctionne? Je sais que cela a à voir avec la partie bin ajoutant l'exécutable à bin et les node_modules de ce répertoire étant vides. Aucune idée de comment résoudre ce problème.
Pour les autres utilisateurs, j'ai eu ce problème en raison de l'installation de ma npm
dans un emplacement ne se trouvant pas sur mon NODE_PATH
.
[root@uberneek ~]# which npm
/opt/bin/npm
[root@uberneek ~]# which node
/opt/bin/node
[root@uberneek ~]# echo $NODE_PATH
Mon NODE_PATH était vide et l'exécution de npm install --global --verbose promised-io
montrait qu'il était installé dans /opt/lib/node_modules/promised-io
:
[root@uberneek ~]# npm install --global --verbose promised-io
npm info it worked if it ends with ok
npm verb cli [ '/opt/bin/node',
npm verb cli '/opt/bin/npm',
npm verb cli 'install',
npm verb cli '--global',
npm verb cli '--verbose',
npm verb cli 'promised-io' ]
npm info using [email protected]
npm info using [email protected]
[cut]
npm info build /opt/lib/node_modules/promised-io
npm verb from cache /opt/lib/node_modules/promised-io/package.json
npm verb linkStuff [ true, '/opt/lib/node_modules', true, '/opt/lib/node_modules' ]
[cut]
Mon script échoue sur require('promised-io/promise')
:
[neek@uberneek project]$ node buildscripts/stringsmerge.js
module.js:340
throw err;
^
Error: Cannot find module 'promised-io/promise'
at Function.Module._resolveFilename (module.js:338:15)
J'ai probablement installé node et npm depuis les sources en utilisant configure --prefix=/opt
. Je ne sais pas pourquoi cela les a rendus incapables de trouver des modules installés. La solution pour le moment consiste à pointer NODE_PATH dans le bon répertoire:
export NODE_PATH=/opt/lib/node_modules
Mon require('promised-io/promise')
réussit maintenant.
Par défaut, le noeud ne regarde pas à l'intérieur du répertoire/usr/local/lib/node_module pour charger des modules globaux . Reportez-vous au chargement de module expliqué dans http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
Vous devez donc soit 1) ajouter le fichier/usr/local/lib/node_module à NODE_PATH et l'exporter Ou 2) copier les modules de nœud installés dans/usr/local/lib/node (Comme expliqué dans le lien de chargement du module, le noeud cherchera dans ce chemin et fonctionnera)
Pour certains (comme moi) que rien d'autre ne fonctionne, essayez ceci:
brew cleanup
brew link node
brew uninstall node
brew install node
J'espère que ça aide quelqu'un :)
J'ai eu l'erreur de module "optimist" et je viens de faire "npm install" pour la résoudre. passé cette erreur.
J'ai eu ce problème pour request-promise
. Dans mon cas, en remplaçant:
npm install request-promise --global
avec
npm install request-promise --cli
travaillé ( source )
Aussi, essayez de définir la variable d'environnement
NODE_PATH=%AppData%\npm\node_modules
$ vim /etc/profile.d/nodejs.sh
NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
export NODE_PATH="$NODE_PATH"
Sous Windows, si vous venez de faire une nouvelle installation et que vous obtenez cela, vous devez supprimer votre cache npm dans\AppData\Roaming
Dans mon cas, node
et npm
étaient dans le même chemin (/usr/bin
). Le NODE_PATH
étant vide, la npm
a placé les modules globaux dans /usr/lib/node_modules
où require(...)
les a trouvés correctement . La seule exception était le module npm
, fourni avec le package nodejs. Depuis que j'utilise un système 64 bits, il a été placé dans /usr/lib64/node_modules
. Ce n'est pas là que require (...) effectue une recherche dans le cas où NODE_PATH
est vide et où le nœud est démarré à partir de /usr/bin
. J'ai donc eu deux options:
/usr/lib64/node_modules/npm
à /usr/lib/node_modules/npm
/usr/lib/node_modules/*
à /usr/lib64/node_modules/
et définissez NODE_PATH=/usr/lib64/node_modules
Les deux ont travaillé. J'utilise OpenSUSE 42.1 et le package nodejs du référentiel de mises à jour. La version est 4.4.5.
Pour Windows, à partir de Nodejs ne peut pas trouver le module installé sur Windows? ce qui a fonctionné pour moi est d'exécuter le lien npm comme dans
npm link wisp
Je l'ai fait de manière simple ...
npm install --global --verbose protractor
fonctionne bien pour moi.
J'espère que cela vous aide ....
J'ai eu cette erreur Error: Cannot find module 'number-is-nan'
alors que le module existe réellement. C'était dû à une mauvaise/incomplète installation de Node.js.
Pour Windows, comme le suggèrent d’autres réponses, vous avez besoin d’une installation propre du noeud - Noeud :
npm
et npm_cache
dans C:\Users\user\AppData\Roaming
npm init
ou (npm init --yes
pour config par défaut )NODE_PATH
. Ce chemin est l'endroit où vos paquets sont installés. C'est probablement quelque chose commeNODE_PATH = C:\Users\user\node_modules or C:\Users\user\AppData\Roaming\npm\node_modules
npm
devrait fonctionner correctementRemarque :
Essayez les derniers points avant de réinstaller Node.js, cela pourrait vous faire gagner du temps et éviter de réinstaller tous vos paquets.
Avait le même problème sur l'un des serveurs de test exécutant Ubuntu
sous root
. Puis créé un nouvel utilisateur en utilisant useradd -m myuser
et tout installé (nvm
, node
, packages) comme myuser
Maintenant ça fonctionne bien.
Pour les utilisateurs Mac, il est préférable d'utiliser l'installation manuelle:
Pour minimiser les risques d'erreurs d'autorisations, vous pouvez configurer npm en utilisez un répertoire différent. Dans cet exemple, ce sera un .__ caché. répertoire sur votre dossier personnel.
Sauvegardez votre ordinateur avant de commencer.
Créez un répertoire pour les installations globales:
mkdir ~/.npm-global
Configurez npm pour utiliser le nouveau chemin de répertoire:
le paramétrage du préfixe npm '~/.npm-global'
Ouvrez ou créez un fichier ~/.profile et ajoutez cette ligne:
export PATH = ~/.npm-global/bin: $ PATH
De retour sur la ligne de commande, mettez à jour vos variables système:
source ~/.profile
Test: Téléchargez un package globalement sans utiliser Sudo.
npm installer -g jshint
Au lieu des étapes 2 à 4, vous pouvez utiliser la variable ENV correspondante (par exemple, si vous ne voulez pas modifier ~/.profile):
NPM_CONFIG_PREFIX=~/.npm-global
Référence: https://docs.npmjs.com/getting-started/fixing-npm-permissions
Je devais ajouter C:\Utilisateurs\{Nom d'utilisateur}\AppData\Roaming\npm à mes variables d'environnement pour pouvoir ensuite installer des éléments.
J'ai eu la même erreur que l'OP, mais en fouillant dans les journaux, je pouvais voir sh: node: command not found
.
Il s’avère que le programme/usr/bin/node (lien symbolique) n’est plus installé avec apt install nodejs
. Une fois que /usr/bin/node' to
nodejs,
npm a établi un lien symbolique, installer -g @ angular/cli` a réussi.
La manière appropriée de l'installer sur debian est apt install nodejs-legacy
.
Je viens de rencontrer ce problème du module axios
. Ensuite, j'ai essayé ceci: lancez rm -rf node_modules
et yarn
. Et il fonctionne.