2016-01-26 14 views
10

Utilizzo il framework Ionic per creare app ibride. Secondo il sito ufficiale, ho bisogno di ottenere la versione 4.2.4 di Node.js, che include il gestore di pacchetti npm. Una delle dipendenze necessarie per ionico è Cordova in modo che ho eseguito il seguente comando per farloL'installazione di npm non funziona durante l'esecuzione di npm install cordova

C:\Users\ferrero>npm install -g cordova 

Dopo di allora, i log della console

npm info it worked if it ends with ok 
npm verb cli [ 'C:\\Program Files\\nodejs\\node.exe', 
npm verb cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js', 
npm verb cli 'prefix', 
npm verb cli '-g' ] 
npm info using [email protected] 
npm info using [email protected] 
npm verb exit [ 0, true ] 
npm info ok 
npm info it worked if it ends with ok 
npm verb cli [ 'C:\\Program Files\\nodejs\\node.exe', 
npm verb cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm- cli.js', 
npm verb cli 'install', 
npm verb cli 'cordova' ] 
npm info using [email protected] 
npm info using [email protected] 
npm verb config Skipping project config: C:\Users\ferrero/.npmrc. 
(matches userconfig) 
npm verb install initial load of C:\Users\ferrero\package.json 
npm verb readDependencies loading dependencies from C:\Users\ferrero\package.json 
npm verb cache add spec cordova 
npm verb addNamed "latest" is being treated as a dist-tag for cordova 
npm info addNameTag [ 'cordova', 'latest' ] 
npm verb addNameTag registry:https://registry.npmjs.org/cordova not in flight; fetching 
npm verb request uri https://registry.npmjs.org/cordova 
npm verb request no auth needed 
npm info attempt registry request try #1 at 16:47:06 
npm verb request id 62f85abc5c5b7cd5 
npm verb etag "6KQ69KRX02Y8MUJFT56H9DE6N" 
npm http request GET https://registry.npmjs.org/cordova 
npm info retry will retry, error on last attempt: Error: self signed certificate in certificate chain 

Come si può vedere dal registro, a conduzione NPM versione 2.14 12 e si lamenta che la causa è un certificato autofirmato - probabilmente emesso da https://registry.npmjs.org/cordova. Così, per superare questo problema, corro

npm config set registry=http://registry.npmjs.org 

E, dopo di che (solo la parte rilevante)

C:\Users\ferrero>npm install -g cordova 

npm verb cache add spec cordova 
npm verb addNamed "latest" is being treated as a dist-tag for cordova 
npm info addNameTag [ 'cordova', 'latest' ] 
npm verb addNameTag registry:http://registry.npmjs.org/cordova not in flight; fetching 
npm verb request uri http://registry.npmjs.org/cordova 
npm verb request no auth needed 
npm info attempt registry request try #1 at 16:59:34 
npm verb request id 359f93cb3aa8b76e 
npm verb etag "6KQ69KRX02Y8MUJFT56H9DE6N" 
npm http request GET http://registry.npmjs.org/cordova 
npm http 304 http://registry.npmjs.org/cordova 
npm verb headers { 
    date: 'Tue, 26 Jan 2016 18:59:34 GMT', 
    npm verb headers via: '1.1 varnish', 
    npm verb headers 'cache-control': 'max-age=300', 
    npm verb headers etag: '"6KQ69KRX02Y8MUJFT56H9DE6N"', 
    npm verb headers age: '263', 
    npm verb headers connection: 'keep-alive', 
    npm verb headers 'x-served-by': 'cache-atl6230-ATL', 
    npm verb headers 'x-cache': 'HIT', 
    npm verb headers 'x-cache-hits': '1', 
    npm verb headers 'x-timer': 'S1453834774.362657,VS0,VE1', 
    npm verb headers vary: 'Accept' 
} 
npm verb etag http://registry.npmjs.org/cordova from cache 
npm verb get saving cordova to C:\Users\ferrero\AppData\Roaming\npm-cache\registry.npmjs.org\cordova\.cache.json 
npm verb addNamed "5.4.1" is a plain semver version for cordova 
npm verb addRemoteTarball http://registry.npmjs.org/cordova/-/cordova-5.4.1.tgz 
not in flight; adding 
npm verb addRemoteTarball [ 'http://registry.npmjs.org/cordova/-/cordova-5.4.1.tgz', 
npm verb addRemoteTarball 'bc56bc1d3c5387a7926408212dfbce59002f9d76' ] 

Questa volta, non si lamenta qualsiasi altra cosa. Invece, l'indicatore di caricamento - un carattere pipe - continua a correre e correre. Quindi, cosa dovrei fare per scaricare tale dipendenza?

+2

io non sono sicuro che sia rilevante, ma si deve digitare NPM installare Cordova-g non solo NPM installare Cordova. So che c'è stato qualche problema con le ultime versioni di node/npm ma è stato risolto con cordova 5.4 e> penso. Ho appena installato un nuovo computer con l'ultima versione del nodo e non ho avuto problemi con l'installazione di cordova. – QuickFix

+0

Secondo ionic get-started - http://ionicframework.com/getting-started/ -, richiede Node.js 4 perché "il nodo 5 non funziona al momento!". Per questo motivo, ho scaricato Node.js 4.2.4 –

+0

@ArthurRonald Forse prova 'npm uninstall -g cordova', quindi' npm install -g npm', quindi 'npm --loglevel info install -g cordova' e a meno vedi cosa si sta bloccando? – heenenee

risposta

2

Sembra che stiamo esaminando due problemi distinti.

L'errore del certificato è probabilmente dovuto a un proxy SSL in uscita. Qualcuno, molto probabilmente il tuo datore di lavoro, sta aprendo tutto il traffico SSL in uscita. Per risolvere il problema, è necessario comunicare a NPM che questo certificato è corretto importando il certificato CA del proxy in uso.

npm config set cafile = "/the/certificate/file.pem" 

Potrebbe anche essere necessario per impostare l'indirizzo proxy per NPM così:

npm config set proxy http://proxy.example.com:3128 
npm config set https-proxy http://proxy.example.com:3128 

L'incompatibilità con il nodo 5.0 sembra essere stato fissato secondo la mia ricerca. La documentazione sembra non essere aggiornata.

Il bug in Cordova che potrebbe essere stato il problema era un missing method in the Q promises library, da cui dipende Cordova.

Nel novembre 2015 un utente è stato in grado di use Ionic successfully with node 5.1.0.

+0

Altre impostazioni possono essere trovate qui: https://gist.github.com/erkobridee/4061363 (portoghese) –

0

Ok, penso che la nota su nodo 4 vs nodo 5 è dei vecchi tempi di Cordova 5.0 quando c'era un problema durante l'installazione di Cordova con il nodo 5.

Da allora hanno pubblicato Cordova 5.4 e Cordova 6, dove non ci sono più problemi con il nodo 5.

Io di solito non uso ionico, ma per essere sicuro, con la mia nuova installazione del nodo v5.4.1, dove stavo già eseguendo cordova 5.4 (installato anche con il nodo 5.4. 1), I:

  • installato cordova 6: npm install -g cordova
  • installato ionica 1.7.13: npm install -g ionic
  • creato un'applicazione ionica: ionic start myApp tabs
  • eseguire l'applicazione su un dispositivo Android

cd myApp cordova platform add android ionic run android

E tutto ha funzionato alla perfezione.

Quindi presumo che si possa tranquillamente provare a installare l'ultima versione del nodo per creare app con ionic. E forse il nodo 5.4.1 risolverà il problema con il nodo 4.2.4?

0

Problema qui che si sta utilizzando il certificato autofirmato in base all'errore self signed certificate in certificate chain.

Se si vuole correggere l'errore qui alcune informazioni per voi:

Ma se non c'è modo per risolvere il problema è sufficiente impostare registro http (trasportare circa config parola)

npm config set registry http://registry.npmjs.org/ 
-1

Una cosa simile mi è successo prima e ciò che ha funzionato per me allora era.

In primo luogo, disinstallare nodo e npm. In secondo luogo, eliminare le cartelle npm e npm-cache in C: \ Users \ yourname \ AppData \ Roaming. E infine, scaricare di nuovo e reinstallare una nuova copia di node.js.

Non sono sicuro se questo funzionerà sul tuo caso ma spero che questo aiuti !!

2

Anche ho dovuto affrontare lo stesso problema, mentre facendo qualsiasi comando npm install -g XXX, è stato risolto da npm config set strict-ssl false