2016-01-26 13 views
10

Używam Ionic framework do budowania aplikacji hybrydowych. Zgodnie z oficjalną stroną, potrzebuję uzyskać wersję 4.2.4 Node.js, która zawiera menedżera pakietów npm. Jednym z zależnościami potrzebnych jonową Cordova tak, że ja uruchomić następujące polecenie, aby jąInstalacja npm nie działa przy uruchomieniu npm install cordova

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

Następnie, dzienniki konsoli

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 

Jak widać z dziennika, uruchom npm wersji 2.14 .12 i narzeka, że ​​przyczyną jest samopodpisany certyfikat - prawdopodobnie wydany przez https://registry.npmjs.org/cordova. Tak więc, aby rozwiązać ten problem, należy uruchomić

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

A po tym (tylko odpowiedniej części)

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' ] 

Tym razem, to nie ma nic innego narzekać. Zamiast tego wskaźnik ładowania - znak potoku - działa i działa. Co powinienem zrobić, aby pobrać taką zależność?

+2

nie jestem pewien, że to istotne, ale należy wpisać npm zainstalować -g Cordova nie tylko npm zainstalować Cordova. Wiem, że był problem z najnowszymi wersjami węzła/npm, ale został naprawiony za pomocą cordova 5.4 i> myślę. Właśnie zainstalowałem nowy komputer z najnowszą wersją węzła i nie miałem problemu z instalacją cordova. – QuickFix

+0

Zgodnie z jonowym uruchomieniem - http://ionicframework.com/getting-started/ - wymaga ono Node.js 4, ponieważ "Węzeł 5 nie działa w tej chwili!". Z tego powodu pobrałem plik Node.js 4.2.4 –

+0

@ArthurRonald Może wypróbuj 'npm uninstall -g cordova', następnie' npm install -g npm', następnie 'npm --loglevel info install -g cordova' oraz przynajmniej zobaczyć, co utknęło? – heenenee

Odpowiedz

2

Wygląda na to, że patrzymy tutaj na dwa odrębne zagadnienia.

Błąd certyfikatu prawdopodobnie wynika z wychodzącego proxy SSL. Ktoś, najprawdopodobniej twój pracodawca, otwiera cały ruch SSL podczas wychodzenia. Aby to naprawić, musisz poinformować NPM, że ten certyfikat jest w porządku, importując certyfikat CA używanego serwera proxy.

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

Być może trzeba ustawić adres serwera proxy dla KMP, a także:

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

Niezgodność z węzła 5.0 wydaje się być ustalona według moich badań. Dokumentacja wydaje się być przestarzała.

Błąd w Cordova, który mógł być problemem, polegał na missing method in the Q promises library, od którego zależy Cordova.

W listopadzie 2015 użytkownik był w stanie use Ionic successfully with node 5.1.0.

+0

Można znaleźć dodatkowe ustawienia tutaj: https://gist.github.com/erkobridee/4061363 (portugalski) –

0

Ok, myślę, że uwaga na temat węzła 4 vs węzła 5 jest od dawnych czasów Cordova 5,0 kiedy wystąpił problem podczas instalacji Cordova z węzła 5.

Od tamtej wydany Cordova Cordova 5.4 i 6, gdzie nie ma więcej problemów z węzłem 5.

Zwykle nie używam jonów, ale na pewno, z moją nową instalacją węzła v5.4.1, gdzie już pracowałem cordova 5.4 (zainstalowałem również z węzłem 5.4. 1), I:

  • zainstalowane cordova 6: npm install -g cordova
  • zainstalowane jonowych 1.7.13: npm install -g ionic
  • stworzył aplikację jonowej: ionic start myApp tabs
  • uruchomić aplikację na urządzeniu android

cd myApp cordova platform add android ionic run android

i wszystko działało idealnie.

Zakładam więc, że można bezpiecznie spróbować zainstalować najnowszą wersję węzła, aby tworzyć aplikacje z jonowym. A może węzeł 5.4.1 rozwiąże problem napotkany w węźle 4.2.4?

0

Problem polega na tym, że używasz samopodpisanego certyfikatu zgodnie z błędem self signed certificate in certificate chain.

Jeśli chcesz naprawić błąd tutaj kilka informacji dla Ciebie:

Ale jeśli nie ma sposobu, aby poradzić sobie z problemem wystarczy ustawić rejestrze http (nosić około config słowo)

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

Podobna rzecz zdarzyła mi się wcześniej, a to, co dla mnie wtedy działało, było.

Najpierw odinstaluj węzeł i npm. Po drugie, usuń foldery npm i npm-cache w C: \ Users \ yourname \ AppData \ Roaming. I na koniec ponownie pobierz i zainstaluj nową kopię pliku node.js.

Nie jestem pewien, czy to zadziała w twoim przypadku, ale mam nadzieję, że to pomoże!

2

nawet ja w obliczu tego samego problemu robiąc żadnego polecenia npm install -g XXX, został rozwiązany przez npm config set strict-ssl false

Powiązane problemy