Npm install не работает при запуске npm install cordova
Я использую Ionic framework для создания гибридных приложений. Согласно официальному сайту, мне нужно получить версию 4.2.4 Node.js, которая включает диспетчер пакетов npm. Одна из зависимостей, необходимых Ionic, - это cordova, поэтому я запускаю следующую команду, чтобы получить ее
C:\Users\ferrero>npm install -g cordova
После этого журналы консоли
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
Как вы можете видеть из log, npm run version 2.14.12, и он жалуется, что причиной является самоподписанный сертификат - скорее всего, выпущенный https://registry.npmjs.org/cordova. Итак, чтобы преодолеть эту проблему, я запускаю
npm config set registry=http://registry.npmjs.org
И после этого (только соответствующая часть)
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' ]
На этот раз он больше не жалуется. Вместо этого индикатор загрузки - символ трубы - продолжает работать и работает. Итак, что мне делать, чтобы загрузить такую зависимость?
Ответы
Ответ 1
Кажется, мы рассматриваем две различные проблемы.
Ошибка сертификата, вероятно, связана с исходящим 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
Несовместимость с node 5.0, по-видимому, была исправлена в соответствии с моими исследованиями. Документация просто устарела.
Ошибка в Кордове, которая, возможно, была проблемой, была отсутствующий метод в библиотеке Q promises, от которой зависит Кордова.
В ноябре 2015 года пользователь смог успешно использовать Ionic с node 5.1.0.
Ответ 2
Даже я столкнулся с такой же проблемой, выполняя любую команду npm install -g XXX
, она была разрешена npm config set strict-ssl false
Ответ 3
Хорошо, я думаю, что примечание о node 4 vs node 5 относится к старым временам кордовы 5.0, когда возникла проблема при установке кордовы с node 5.
С тех пор они выпустили кордову 5.4 и кордову 6, где больше нет проблемы с node 5.
Обычно я не использую ионную, но, конечно, с моей новой установкой node v5.4.1, где я уже работал с cordova 5.4 (установлен также с node 5.4.1), I:
- Установленная кордова 6:
npm install -g cordova
- установлен ионный 1.7.13:
npm install -g ionic
- создано ионное приложение:
ionic start myApp tabs
- запустите приложение на устройстве Android.
cd myApp
cordova platform add android
ionic run android
И все работает отлично.
Поэтому я предполагаю, что вы можете безопасно установить последнюю версию node для создания приложений с ионной.
И, может быть, node 5.4.1 решит проблему, с которой вы сталкиваетесь с node 4.2.4?
Ответ 4
Проблема здесь в том, что вы используете самозаверяющий сертификат в соответствии с ошибкой self signed certificate in certificate chain
.
Если вы хотите исправить ошибку здесь, вам будет некоторая информация:
Но если нет способа справиться с проблемой, просто установите http-реестр (несите config
word)
npm config set registry http://registry.npmjs.org/
Ответ 5
Аналогичная вещь случилась со мной раньше, и то, что работало для меня тогда, было.
Сначала удалите node и npm.
Во-вторых, удалите папки npm и npm-cache на C:\Users\yourname\AppData\Roaming.
И, наконец, перезагрузите и установите новую копию node.js.
Я не уверен, что это будет работать на вашем деле, но надеюсь, что это поможет!