web-dev-qa-db-fra.com

L’installation npm de Windows a pour résultat global npm ERR! étranger

Je suis nouveau à Grunt et NPM. J'essaie donc quelques "exemples de livres de cuisine" sur le site ' http://tech.pro/tutorial/1190/package-managers-an-introductory-guide-for-the-uninitiated-front-end- developer # front_end_developers '. Vous ne devriez pas avoir à regarder là maintenant, mais je pensais que ce serait bien de partager le site. Jusqu'ici tout va bien, jusqu'à ce qu'il s'agisse de l'installation globale. (Ok, quelques erreurs que je devais comprendre, mais maintenant je travaille avec npm).

Quand il s'agit d'essayer d'installer quelque chose de manière globale, je reste bloqué.

Ce que j'ai fait jusqu'à présent pour tester globalement l'installation d'un paquet:

  1. Répertoire de test créé grunttest

  2. Dans ce répertoire:

    npm install -g jshint

Sortie je peux voir:

 npm http GET https://registry.npmjs.org/jshint
 npm http 304 https://registry.npmjs.org/jshint
 ...
 npm http 304 https://registry.npmjs.org/string_decoder
 C:\Program Files\nodejs\node_modules\npm\jshint -> C:\Program Files\nodejs\node_modules\npm\node_modules\jshinnt
 [email protected] C:\Program Files\nodejs\node_modules\npm\node_modules\jshint
 ├── [email protected]
 ├── [email protected]
 ├── [email protected]
 ├── [email protected]
 ├── [email protected] ([email protected], [email protected])
 ├── [email protected] ([email protected])
 └── [email protected] ([email protected], [email protected], [email protected], [email protected])

Je viens de me rendre compte que le 304, ce qui devrait aller, dit que la ressource n’a pas été modifiée depuis la dernière installation (quelques minutes auparavant).

Vérification de l'existence du jshint avec:

`npm -global list`

Sortie:

[email protected] C:\Program Files\nodejs\node_modules\npm
├── [email protected]
├── [email protected]
├─...
├──
├── [email protected]
├── [email protected]
├── [email protected]
├─┬ [email protected]
│ └── [email protected]
├─┬ [email protected] extraneous
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │   └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │   └─... ├── [email protected]
├── [email protected]
└── [email protected]

**npm ERR! extraneous: [email protected] C:\Program Files\nodejs\node_modules\npm\node_modules\jshint npm**

Questions:

  1. Pourquoi ai-je npm ERR! étranger ...?
  2. Qu'est-ce que ça veut dire?
  3. Comment puis-je résoudre ce problème?

Information:

Je suis sur une machine Windows Windows 7, en utilisant cygwin comme Shell. essayer de juste le jshint (jshint someTestfile.js) ne fonctionne bien sûr pas.

Merci d'avance, Meru

113
Meru

npm ERR! extraneous signifie qu'un paquet est installé mais ne figure pas dans la liste package.json de votre projet.

Puisque vous listez les paquets qui ont été installés globalement, cela vous donnera beaucoup d'erreurs superflues qui peuvent être simplement ignorées car la plupart des choses installées globalement ne seront pas dans le package.json de votre projet.

198

1 & 2: Cela signifie que le fichier jshint ne figure pas dans le fichier package.json de votre projet mais qu'il est installé globalement. Ce n'est donc pas un gros problème.

3: Pour éviter cette erreur étrangère, vous pouvez exécuter ou relancer l’installation avec l’option --save. Cela mettra à jour automatiquement votre fichier package.json:

npm install -g jshint --save

Ou vous devez mettre à jour manuellement votre fichier package.json avec un "dependencies": {...}

20
rebe100x

J'ai résolu ce problème en faisant un npm update dans le dossier du paquet parent, qui supprimait certains paquets superflus de la liste, puis npm uninstall <package> pour les quelques éléments restants.

Semble avoir fonctionné, car je ne reçois aucune erreur après avoir fait cela.

4
metakermit

Je l'ai résolu en combinant toutes les réponses. Au début, j'ai installé le paquet globalement.

npm install -g packagename --save

Comme npm a également installé ce package globalement mais ne l'a pas ajouté à mon fichier local package.json, je devais faire quelque chose à ce sujet.

Je choisis la solution pour supprimer la version locale, puis l’installer globalement.

npm uninstall packagename
npm install -g packagename

De cette façon, je n'ai plus d'avertissements et ne gâche pas le fichier package.json.

3
scorer

Dans mon cas, c’est parce que le nom du paquet dans son fichier package.json n’était pas le même que le nom de la dépendance figurant dans le package.json du module dépendant. Mon erreur, car c’est un nouveau module que j’ai créé, mais difficile à repérer, car npm n’en donnera pas la moindre idée.

Cela s'est produit lors de l'utilisation de la syntaxe dependencies: { "my-module": "file:local-modules/mymodule" }, avec une faute de frappe sous le nom "my-module".

2
youen

J'ai mon cas, j'ai vu ce npm ERR! message étranger dans mon terminal cygwin quand j'ai fait un "npm ls". Je pensais que c'était une sorte de configuration globalement corrompue après avoir beaucoup bricolé. J'apprends les observations suivantes ici:

  • 'npm ls' donne différentes sorties en fonction de l'emplacement actuel de votre dossier.
  • 'npm ls' tente de détecter la présence d'un dossier 'node_modules' à l'emplacement actuel du dossier et de répertorier ce contenu. PAS les globaux!
  • De plus, si le dossier en cours contenant "node_modules" contient également un fichier package.json contenant moins de modules répertoriés ici, le message d'erreur s'affiche.

'Rm package.json' et 'npm ls' ne montrent plus le message d'erreur. Je dis donc que, toujours vérifier l'emplacement actuel pour la présence du dossier 'node_modules' et du fichier package.json, car ceux-ci sont priorisés en premier dans la vérification et s'ils manquent, la vérification continue dans le dossier parent et ainsi de suite, et si vous avez bricolé beaucoup d'extraits de code, vous vous êtes peut-être éparpillé dans des tas de dossiers node_modules et de fichiers package.json. Ici, rien n’est vraiment corrompu, contrairement à ce que nous avons expérimenté avec J2EE Java développement/Eclipse IDE ou les jours où nous devons utiliser regedit pour modifier les paramètres dans Windows.

1
typelogic

Cela est dû au fait que votre paquet n'est pas dans votre package.json. Si vous l'ajoutez, le problème sera résolu, veuillez regarder l'image ci-dessous:

enter image description here

0
Narendra Sagadevan