Подтвердить что ты не робот

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

На этот раз он больше не жалуется. Вместо этого индикатор загрузки - символ трубы - продолжает работать и работает. Итак, что мне делать, чтобы загрузить такую ​​зависимость?

4b9b3361

Ответ 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.

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