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?
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 .
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.
Raison Le nom du module est le même que le nom de la bibliothèque
Solution
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é
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