web-dev-qa-db-fra.com

NPM n'installe pas les dépendances de module

Voici mon package.json pour le module que j'inclus dans le projet parent:

{
  "version": "0.0.1",
  "name": "module-name",
  "dependencies": {
    "express": "3.3.4",
    "grunt": "0.4.1",
    "grunt-contrib-compass": "0.4.0",
    "grunt-contrib-copy": "0.4.1",
    "grunt-contrib-cssmin": "0.4.1",
    "grunt-contrib-jshint": "0.6.3",
    "grunt-contrib-requirejs": "0.4.1",
    "grunt-contrib-uglify": "0.2.2",
    "grunt-contrib-watch": "0.5.1",
    "grunt-express-server": "0.4.1",
    "grunt-karma": "0.4.5",
    "grunt-regex-replace": "0.2.5",
    "request": "2.25.0"
  },
  "scripts": {
    "postinstall": "grunt install"
  }
}

Une chose à noter est que ce module est contenu dans un dépôt privé et que je l'inclue dans le parent package.json comme: "module-name": "git+ssh://git@myserver:user/module-name.git"

122
Ahmed Nuaman

Il semble que vous rencontriez un bogue qui existe depuis assez longtemps et qui n'a pas encore de solution. Il existe plusieurs problèmes en suspens pour ce cas dans le référentiel npm:

Dans la première, énumérez plusieurs solutions de contournement que vous pouvez essayer.

Une solution alternative peut être (un peu bidon) d’énumérer explicitement les dépendances en tant que dépendants de premier niveau. Cela nécessite que vous mainteniez la liste, mais pratiquement cela doit être fait très rarement.

125
allprog

J'ai eu un problème très similaire, la suppression de tout le dossier node_modules et la réinstallation a fonctionné pour moi. J'ai appris cette astuce du IT Crowd show! 

rm -rf node_modules
npm install
102
Mohsen

J'utilise la machine Windows. 

  1. J'ai supprimé le dossier node_modules.
  2. D'une manière ou d'une autre, le fichier package.lock.json est en cours de création. J'ai supprimé ce fichier.
  3. Puis npm installer.
  4. Construction propre.
  5. Courir.
20
Virat18

si vous avez hérité de ce code, il se peut que les dépendances et les versions aient été verrouillées et que vous disposiez d'un fichier ./npm-shrinkwrap.json.

si votre dépendance ne figure pas dans ce fichier, il ne sera jamais installé avec la commande npm install.

vous devrez installer manuellement les packages, puis exécuter npm shrinkwrap pour mettre à jour le fichier shrinkwrap.

15

Je suppose que vous êtes confronté au problème suivant: votre fichier package.json ne se trouve pas dans le même répertoire que votre Gruntfile.js. Lorsque vous exécutez vos commandes grunt xxx, vous obtenez un message d'erreur du type:

Local Npm module "xxx" not found. Is it installed?

Pour l'instant, la solution est:

  • Créez package.json dans le même répertoire que Gruntfile.js
  • Définir les modules requis par votre projet Grunt
  • Exécutez npm install pour les charger localement
  • Maintenant, la commande grunt requise devrait fonctionner.

À mon humble avis, il est regrettable que nous ne puissions pas charger de modules de résolution grognante à partir d’un module npm parent (par exemple, package.json dans un répertoire parent du même projet). La discussion ici semble indiquer que cela a été fait pour éviter de charger des modules "globaux" mais je pense que ce que nous voulons, c'est charger à partir des modules "mon projet".

10
kctang

OP peut être vrai pour une version plus ancienne du noeud. Cependant, je me suis retrouvé face au même avec le noeud 4.4.1.

Cela peut très bien être lié à la version du nœud que vous utilisez. Essayez de mettre à niveau vers une dernière version. Certaines dépendances ne se chargent pas de manière transitoire si elles sont incompatibles avec la version du noeud.

J'ai trouvé cela en exécutant npm update.

Après la mise à niveau vers la dernière version (4.4 -> 5.9); cela a été corrigé.

9
Nrj

Dans mon cas, cela a aidé à supprimer node_modules et package-lock.json.

Après cela, réinstallez tout avec npm install.

5
Lars Kliesing

Juste au cas où quelqu'un souffrirait de cette situation et commettrait la même erreur que moi, voici ce que c'était dans mon cas. Après avoir tapé ma tête contre le mur pendant une heure, je me suis rendu compte que mon fichier json était imbriqué de manière incorrecte et que la clé "dépendances" était à l'intérieur de la clé "référentiel".
Inutile de dire qu'aucune erreur n'a été décelée et qu'aucun module n'a été installé.

4
dgo

Vous devrez peut-être installer le grunt-cli, essayez ceci avant de faire une installation de npm:

Sudo npm install -g grunt-cli

Cela corrige le grunt ne se ferme pas pour moi, vous aurez également besoin d'un fichier de grunt valide.

Source: https://stackoverflow.com/a/16456467/241294

3
poida

Je recevais cette erreur lorsque j'ai installé un environnement de nœud propre sur Windows. 

Pour résoudre ce problème, je suis allé dans mon nouveau répertoire de projet (que je viens d'échafauder avec yo angular) et j'ai tapé deux commandes:

npm install -g grunt --save-dev

Cela installera les dépendances locales Grunt à votre projet. Suivant:

npm install 

Cela garantira que toutes vos (nouvelles) dépendances de projet sont installées. 

Tada! 

2
Jesse Lawson

Une autre façon de résoudre ce problème consiste à l'ajouter dans la section des scripts de votre module package.json

"preinstall": "npm install {Packages You depend on}"

ce que cela va faire est, il installera tous les paquets nécessaires au module et vous n'obtiendrez pas cette erreur.

1
Ahmed Fathy

Vérifiez également que votre nom de package est correctement accepté:

FAUX:

{
    "name":"My Awesome Package"
}


CORRECT

{
    "name": "my-awesome-package-name"
}
1
Caius

Cela vaut la peine de mentionner pour vous assurer que vos dépendances doivent être dans la partie dependencies de votre package.json (par opposition à devDependencies).

Mon problème était fondamentalement le même que OP:

  • installer un dépôt privé (appelons-le repo1) via "module-name": "git+ssh://git@myserver:user/my-repo-name.git" dans un autre dépôt (appelons-le repo2),
  • dans repo2 de node_modules, une dépendance de paquetage de repo1 n'y était pas.
  • Mon erreur stupide! .. repo1 listait cette dépendance dans devDependencies au lieu de dependencies
  • Déplacez la dépendance dans mon repo1 de package.json de devDependencies vers dependencies
  • Dans mon repo2, j'ai enlevé mon node_modules et package-lock.json, puis npm install, voilà!… La dépendance était là!
1
cafesanu

arrive avec l'ancienne version du noeud. utilisez la dernière version du noeud comme ceci:

$ nvm use 8.0
$ rm -rf node_modules 
$ npm install
$ npm i somemodule 

edit: assurez-vous également que vous avez save
Exemple: npm install yourmoduleName --save

0
Deke

J'ai eu le même problème. Mais sur la même machine, un projet avait un bon package.json, où toutes mes dépendances ont été installées avec succès. Et dans un autre projet, mes dépendances package.json n’étaient pas installées, quoi que je fasse ... Je venais de copier le package.json et de le coller dans un autre projet. Et ça a marché! La différence que j’ai trouvée n’était que la ligne vide au début du fichier. Je ne sais pas ou cela influence quelque chose, peut-être un autre problème. Mais le problème n'était que le fichier package.json.

0
mansim

Je pense que j’ai également fait face à ce problème et la meilleure solution que j’ai trouvée était de regarder ma console et de déterminer l’erreur commise. Alors, je l'ai lu attentivement et j'ai constaté que le problème était que je n'avais pas spécifié mon dépôt, ma description et mon nom valide dans mon package.json. J'ai ajouté ces informations et tout allait bien.

0
WinnersProx