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"
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.
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
J'utilise la machine Windows.
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.
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:
npm install
pour les charger localementÀ 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".
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é.
Dans mon cas, cela a aidé à supprimer node_modules
et package-lock.json
.
Après cela, réinstallez tout avec npm install
.
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é.
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.
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!
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.
Vérifiez également que votre nom de package est correctement accepté:
{
"name":"My Awesome Package"
}
{
"name": "my-awesome-package-name"
}
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:
repo1
) via "module-name": "git+ssh://git@myserver:user/my-repo-name.git"
dans un autre dépôt (appelons-le repo2
),repo2
de node_modules
, une dépendance de paquetage de repo1
n'y était pas.repo1
listait cette dépendance dans devDependencies
au lieu de dependencies
repo1
de package.json
de devDependencies
vers dependencies
repo2
, j'ai enlevé mon node_modules
et package-lock.json
, puis npm install
, voilà!… La dépendance était là!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
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.
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.