222 votes

NPM global install "cannot find module" (Impossible de trouver le module)

J'ai écrit un module que j'ai publié sur npm il y a un instant (https://npmjs.org/package/wisp).

Il s'installe donc bien à partir de la ligne de commande :

$ npm i -g wisp

Cependant, lorsque je l'exécute à partir de la ligne de commande, je continue à obtenir une erreur indiquant 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 une dépendance :

{
  "name": "wisp",
  "author": "Brendan Scarvell <bscarvell@gmail.com>",
  "version": "0.1.0",
  "description": "Global nodejs file server",
  "dependencies": {
    "optimist": "~0.3.4"
  },
  "repository": "git://github.com/tehlulz/wisp",
  "bin": {
    "wisp" : "./wisp"
  }
}

Quelqu'un sait-il ce qu'il faut faire pour que cela fonctionne ? Je sais que cela a à voir avec la partie bin qui ajoute l'exécutable à bin et les node_modules dans ce répertoire sont vides. Je ne sais pas comment résoudre ce problème.

0 votes

Que se passe-t-il si vous installez sans l'option -g ?

0 votes

Il installe un dossier node_modules dans le répertoire courant qui contient wisp.

0 votes

Je sais. Tu as toujours l'erreur ?

2voto

alain.janinm Points 7597

J'ai obtenu cette erreur Error: Cannot find module 'number-is-nan' alors que le module existe réellement. Cela était dû à une installation de Node.js mauvaise/incomplète.

Pour Windows, comme d'autres réponses l'ont suggéré, vous avez besoin d'une nouvelle version de Windows. Installation des nœuds :

  • Désinstaller Node.js
  • Supprimez les deux dossiers npm y npm_cache sur C:\Users\user\AppData\Roaming
  • Redémarrer Windows et installer Node.js
  • Exécuter npm init ou ( npm init --yes para configuration par défaut )
  • Définissez la variable d'environnement Windows pour NODE_PATH . Ce chemin est l'endroit où vos paquets sont installés. C'est probablement quelque chose comme NODE_PATH = C:\Users\user\node_modules or C:\Users\user\AppData\Roaming\npm\node_modules
  • Démarrez une nouvelle console cmd et npm devrait fonctionner correctement

Note :

Essayez les derniers points avant de réinstaller Node.js, cela pourrait vous faire gagner du temps et vous éviter de réinstaller tous vos paquets.

2voto

Pour les utilisateurs de Mac, il est préférable d'utiliser l'installation manuelle :

Pour minimiser le risque d'erreurs de permissions, vous pouvez configurer npm pour utiliser un répertoire différent. Dans cet exemple, il s'agira d'un répertoire caché dans votre dossier personnel.

  1. Faites une sauvegarde de votre ordinateur avant de commencer.

  2. Créez un répertoire pour les installations globales :

    mkdir ~/.npm-global

  3. Configurez npm pour utiliser le nouveau chemin du répertoire :

    npm config définit le préfixe '~/.npm-global'.

  4. Ouvrez ou créez un fichier ~/.profile et ajoutez cette ligne :

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

  5. De retour sur la ligne de commande, mettez à jour vos variables système :

    source ~/.profile

  6. Test : Télécharger un paquet globalement sans utiliser sudo.

    npm install -g jshint

Au lieu des étapes 2-4, vous pouvez utiliser la variable ENV correspondante (par ex. si vous ne voulez pas modifier ~/.profile) :

NPM_CONFIG_PREFIX=~/.npm-global

Référence : https://docs.npmjs.com/getting-started/fixing-npm-permissions

2voto

Finedy Points 21

Je viens de rencontrer ce problème de la axios module. Puis j'ai essayé ceci : exécuter rm -rf node_modules y yarn . Et ça marche.

1voto

Dmitriy Points 1324

J'ai eu le même problème sur l'un des serveurs de test en cours d'exécution. Ubuntu sous root . Puis j'ai créé un nouvel utilisateur en utilisant useradd -m myuser y tout installé ( nvm , node , paquets) comme myuser . Maintenant, il fonctionne bien.

1voto

GT. Points 11

Dans mon cas, les deux node y npm étaient dans le même chemin ( /usr/bin ). Le site NODE_PATH était vide, donc le npm a placé les modules globaux dans /usr/lib/node_modulesrequire(...) réussi à les trouver. La seule exception était le npm qui est fourni avec le paquet nodejs. Comme j'utilise un système 64 bits, il a été placé dans le répertoire /usr/lib64/node_modules . Ce n'est pas là que require(...) cherche en cas de vide. NODE_PATH et le nœud a commencé à partir de /usr/bin . J'avais donc deux options :

  • lien /usr/lib64/node_modules/npm à /usr/lib/node_modules/npm
  • déplacer les modules de /usr/lib/node_modules/* à /usr/lib64/node_modules/ et mettre NODE_PATH=/usr/lib64/node_modules

Les deux ont fonctionné. J'utilise OpenSUSE 42.1 et le paquet nodejs du dépôt des mises à jour. La version est 4.4.5.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X