2014-12-03 14 views
37

ho provato a fare quanto segue (per le istruzioni da official site):npm WARN installare Rifiutandosi di installare Hapi come una dipendenza di per sé

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

Ma questo mi dà un errore come questo:

npm WARN installare Rifiutandosi di installare Hapi come una dipendenza di per sé

Ora, ho fatto una nuova cartella test chiamato hapiTest e ripetuto i comandi e poi tutto ha funzionato bene.

Ho provato la stessa procedura con una cartella gulp e npm install gulp --save e ho ottenuto lo stesso errore, quindi la mia conclusione è che non posso avere il nome della cartella uguale al pacchetto che voglio installare, ma qualcuno può sostenere questa affermazione con qualche documentazione ufficiale?

risposta

107

Quando hai eseguito il comando npm init, c'erano probabilmente alcune domande pertinenti a cui dovevi rispondere. In particolare, il nome del tuo modulo. Quando si utilizza npm init, si presuppone che si desidera che il nome del modulo che si sta creando di essere chiamato il nome della cartella cui si trova.

Quindi non è il nome della cartellache vi impedisce dall'installazione della dipendenza, è il nome del modulo npm che si sta creando.

Aprire lo package.json risultante nella directory hapi e rinominare il modulo in un valore diverso da hapi. Ecco un esempio 'package.json' che funziona, anche integrato in una cartella chiamata 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" 
    } 
} 

Aggiunto Nota

non sono stato in grado di trovare alcuna documentazione così-lontano spiegare questo fenomeno nel contesto di npm; anche se è un po 'un gioco da ragazzi. Richiedere moduli con lo stesso nome all'interno della stessa applicazione sarebbe in conflitto con la filosofia CommonJS.

+0

ho chiamato la cartella inizialmente con lo stesso nome di quella del modulo che volevo installare. Ho ignorato le istruzioni di 'npm init'. Ho riscontrato l'errore nonostante abbia cambiato il nome della directory. Grazie @shennan, ora che ho cambiato il nome in 'package.json', il mondo è tranquillo :) – DDM

+0

Ran nella stessa cosa, il nome del pacchetto era lo stesso del modulo. – Antoine

8

Il nome del modulo è uguale al modulo che si sta tentando di installare. NPM pensa che tu stia installando il modulo su se stesso. Cambia il nome del tuo modulo e si installerà perfettamente.

3

Motivo nome modulo è lo stesso con il nome libreria

Soluzione

  1. Modificare il nome del modulo a qualcos'altro
  2. Cambio 'nome' in package.json
0

Il problema può essere semplice spiegazione d come segue il nome del pacchetto o modulo in package.json non può essere uguale a quello del pacchetto o del modulo che si sta tentando di installare.

Qui hapi è il nome del modulo e si sta tentando di installare un modulo con nome hapi con npm install hapi --save

0

Questo era il mio codice iniziale

{ 
    "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" 
    } 
} 

che ha gettato errore

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 

poi ho rinominato il nome da reagire a react_app e il mio codice è simile

{ 
    "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" 
    } 
} 

allora funzionato

Problemi correlati