установка npm не работает при запуске npm install cordova
Я использую Ionic framework для создания гибридных приложений. Согласно официальному сайту, мне нужно получить версию 4.2.4 узла.js, который включает менеджер пакетов npm. Одной из зависимостей, необходимых Ionic, является cordova, поэтому я запускаю следующую команду, чтобы получить ее
C:Usersferrero>npm install -g cordova
после этого консоль регистрирует
npm info it worked if it ends with ok
npm verb cli [ 'C:Program Filesnodejsnode.exe',
npm verb cli 'C:Program Filesnodejsnode_modulesnpmbinnpm-cli.js',
npm verb cli 'prefix',
npm verb cli '-g' ]
npm info using npm@2.14.12
npm info using node@v4.2.4
npm verb exit [ 0, true ]
npm info ok
npm info it worked if it ends with ok
npm verb cli [ 'C:Program Filesnodejsnode.exe',
npm verb cli 'C:Program Filesnodejsnode_modulesnpmbinnpm- cli.js',
npm verb cli 'install',
npm verb cli 'cordova' ]
npm info using npm@2.14.12
npm info using node@v4.2.4
npm verb config Skipping project config: C:Usersferrero/.npmrc.
(matches userconfig)
npm verb install initial load of C:Usersferreropackage.json
npm verb readDependencies loading dependencies from C:Usersferreropackage.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
как вы можете видеть из журнала, npm запускает версию 2.14.12, и он жалуется, что причиной является самозаверяющий сертификат, вероятно, выданный https://registry.npmjs.org/cordova. Итак, чтобы преодолеть эту проблему, я бегу
npm config set registry=http://registry.npmjs.org
и после этого (только в соответствующей части)
C:Usersferrero>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:UsersferreroAppDataRoamingnpm-cacheregistry.npmjs.orgcordova.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' ]
на этот раз он не жалуется ни на что другое. Вместо этого индикатор загрузки-символ трубы-продолжает работать и работать. Итак, что мне делать, чтобы загрузить такую зависимость ?
5 ответов
мы, похоже, рассматриваем здесь два разных вопроса.
ошибка сертификата, вероятно, из-за исходящего прокси SSL. Кто-то, скорее всего, ваш работодатель, открывает весь трафик SSL на выходе. Чтобы исправить это, вам нужно сообщить NPM, что этот сертификат в порядке, импортировав сертификат CA используемого прокси.
npm config set cafile = "/the/certificate/file.pem"
вам также может потребоваться установить адрес прокси-сервера для npm:
npm config set proxy http://proxy.example.com:3128
npm config set https-proxy http://proxy.example.com:3128
несовместимость с узлом 5.0, похоже, имеет исправлено согласно моим исследованиям. Документация просто кажется устаревшей.
ошибка в Кордове, которая, возможно, была проблемой, была отсутствует метод в библиотеке обещаний Q, от которого зависит Кордова.
в ноябре 2015 года пользователь смог успешно использовать Ionic с узлом 5.1.0.
даже я столкнулся с той же проблемой, делая любой npm install -g XXX
команда, она была разрешена npm config set strict-ssl false
хорошо, я думаю, что примечание об узле 4 против узла 5 из старых дней cordova 5.0, когда была проблема при установке cordova с узлом 5.
С тех пор они выпустили cordova 5.4 и cordova 6, где больше нет проблем с узлом 5.
Я обычно не использую ionic, но, чтобы быть уверенным, с моей новой установкой узла v5.4.1, где я уже запускал cordova 5.4 (установлен также с узлом 5.4.1), I:
- установлен cordova 6 :
npm install -g cordova
- установлен ionic 1.7.13:
npm install -g ionic
- создал ионное приложение:
ionic start myApp tabs
- запустите приложение на устройстве android
cd myApp
cordova platform add android
ionic run android
и все работало отлично.
поэтому я предполагаю, что вы можете безопасно попытаться установить последнюю версию node для создания приложений с ionic. И, возможно, node 5.4.1 решит проблему, с которой вы столкнулись с node 4.2.4?
проблема здесь в том, что вы используете самозаверяющий сертификат в соответствии с ошибкой self signed certificate in certificate chain
.
Если вы хотите исправить ошибку, вот некоторая информация для вас:
- как исправить ошибку сертификата SSL при запуске Npm в Windows?
- https://confluence.atlassian.com/display/SOURCETREEKB/Resolving+SSL+Self-Signed+Certificate+Errors
но если нет способа справиться с проблемой, просто установите http реестр (carry about config
слово)
npm config set registry http://registry.npmjs.org/
подобная вещь случилась со мной прежде и то, что работало для меня тогда был.
во-первых, удалите узел и npm. Во-вторых, удалите папки npm и npm-cache на C:\Users\yourname\AppData\Roaming - ... И, наконец, перезагрузите и переустановите новую копию node.js.
Я не уверен, что это сработает в вашем случае, но надеюсь, что это помогает!!