web-dev-qa-db-fra.com

npm WARN install Refusant d'installer hapi comme une dépendance de lui-même

J'ai essayé de faire ce qui suit (selon les instructions de site officiel ):

  • mkdir hapi && cd hapi
  • npm init
  • npm install hapi --save

Mais cela me donne une erreur comme celle-ci:

npm WARN install Refusant d'installer hapi comme une dépendance de lui-même

Maintenant, j'ai créé un nouveau dossier de test appelé hapiTest et j'ai répété les commandes, puis tout s'est bien passé.

J'ai essayé le même processus avec un dossier gulp et npm install gulp --save, et j'ai obtenu la même erreur, donc ma conclusion est que je ne peux pas avoir le nom du dossier comme le package que je veux installer, mais quelqu'un peut-il sauvegarder cette déclaration avec de la documentation officielle?

40
Nikola

Lorsque vous avez exécuté la commande npm init, il y avait probablement des questions pertinentes auxquelles vous deviez répondre. Plus précisément, le nom de votre module. Lorsque vous utilisez npm init, il suppose que vous voulez que le nom du module que vous créez soit appelé le nom du dossier dans lequel il se trouve.

Ce n'est donc pas le nom du dossier qui vous empêche d'installer la dépendance, c'est le nom du module npm que vous créez.

Ouvrez le package.json dans votre répertoire hapi et renommez le module en autre chose que hapi. Voici un exemple 'package.json' qui fonctionne, même lorsque vous résidez dans un dossier appelé hapi:

{
  "name": "hapi-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "hapi": "^7.5.2"
  }
}

Note ajoutée

Je n'ai jusqu'à présent trouvé aucune documentation expliquant ce phénomène dans le contexte de npm; bien que ce soit un peu évident. Exiger des modules portant le même nom dans la même application entrerait en conflit avec la philosophie CommonJS .

116
shennan

Le nom de votre module est le même que celui que vous essayez d'installer. NPM pense que vous installez le module sur lui-même. Changez le nom de votre module et il s'installera parfaitement.

10
Kashif Nazar

Raison Le nom du module est le même que le nom de la bibliothèque

Solution

  1. Changez le nom du module pour autre chose
  2. Changez 'nom' dans package.json
5
Shanky Munjal

C'était mon code initial

{
  "name": "react",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "react": "^15.6.1"
  }
}

qui a généré une erreur

npm WARN package.json [email protected] No description
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No README data
npm WARN install Refusing to install react as a dependency of itself

alors j'ai renommé le nom de react en react_app et mon code ressemble

{
  "name": "react_app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "react": "^15.6.1"
  }
}

alors ça a marché

0
cryptoKTM

Le problème peut être expliqué simplement comme suit le nom de votre package ou module dans package.json ne peut pas être identique à celui du package ou du module que vous essayez d'installer .

Ici hapi est le nom de votre module et vous essayez d'installer un module avec le nom hapi avec npm install hapi --save

0
Samuel J Mathew