установка 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.

Если вы хотите исправить ошибку, вот некоторая информация для вас:

но если нет способа справиться с проблемой, просто установите http реестр (carry about config слово)

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

подобная вещь случилась со мной прежде и то, что работало для меня тогда был.

во-первых, удалите узел и npm. Во-вторых, удалите папки npm и npm-cache на C:\Users\yourname\AppData\Roaming - ... И, наконец, перезагрузите и переустановите новую копию node.js.

Я не уверен, что это сработает в вашем случае, но надеюсь, что это помогает!!