npm WARN installer Refuser d’installer hapi en tant que dépendance de lui-même

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

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

Mais cela me donne une erreur comme celle-ci:

npm WARN installer Refuser d’installer hapi en tant que dépendance de lui-même

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

J’ai essayé le même processus avec un dossier gulp et npm install gulp --save , et j’ai eu la même erreur, donc ma conclusion est que je ne peux pas avoir le nom du dossier être le même que le paquet que je veux installer, mais quelqu’un peut-il soutenir cette déclaration avec une documentation officielle?

Lorsque vous avez effectué la commande npm init , vous avez probablement dû répondre à des questions pertinentes. Plus précisément, le nom de votre module. Lorsque vous utilisez npm init , cela 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 résultant dans votre répertoire hapi et renommez le module à un autre hapi que hapi . Voici un exemple de «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" } } 

Ajout d’une note

Je n’ai pas pu trouver de documentation à ce jour expliquant ce phénomène dans le contexte de npm; bien que ce soit un peu évident. Les modules nécessitant le même nom dans la même application seraient en conflit avec la philosophie CommonJS .

Le nom de votre module est identique à 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.

Raison Le nom du module est identique au nom de la bibliothèque

Solution

  1. Changer le nom du module en autre chose
  2. Changer le nom dans package.json

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

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 jeté l’erreur

 npm WARN package.json react@1.0.0 No description npm WARN package.json react@1.0.0 No repository field. npm WARN package.json react@1.0.0 No README data npm WARN install Refusing to install react as a dependency of itself 

alors j’ai renommé le nom de réagir à 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 fonctionné