运行npm install cordova时,npm install不起作用

我正在使用Ionic框架来构build混合应用程序。 据官方网站介绍,我需要获得Node.js版本4.2.4,其中包括npm包pipe理器。 离子所需的依赖之一是cordova,所以我运行以下命令来获取它

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

之后,控制台login

 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 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 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 npm@2.14.12 npm info using node@v4.2.4 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 

正如您从日志中看到的,npm运行版本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' ] 

这一次,它不会抱怨别的。 相反,加载指示器(一个pipe道字符)保持运行和运行。 那么,我应该怎么做才能下载这种依赖?

我们似乎在这里看到两个不同的问题。

证书错误可能是由于出站SSL代理。 有人,最有可能是你的雇主,正在开放所有的SSLstream量。 要解决这个问题,你需要通过导入正在使用的代理的CA证书来告诉NPM这个证书是可以的。

 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的不兼容似乎已经被修复了。 文件似乎过时了。

cordova可能是这个问题的缺陷是cordova依赖的Q诺言库中缺less一个方法 。

在2015年11月,一个用户能够在5.1.0版本上成功使用Ionic 。

即使我在执行任何npm install -g XXX命令时也面临同样的问题,它已通过npm config set strict-ssl false

好的,我认为关于节点4和节点5的说明来自Cordova 5.0的旧版本,当安装Cordova和节点5时出现问题。

从那以后,他们发布了cordova 5.4和cordova 6,节点5没有问题。

我通常不使用离子,但可以肯定的是,在我已经运行cordova 5.4(也安装了5.4.1节点)的节点v5.4.1的全新安装下,我:

  • 安装了cordova 6: npm install -g cordova
  • 安装离子1.7.13: npm install -g ionic
  • 创build一个离子应用程序: ionic start myApp tabs
  • 在Android设备上运行应用程序

cd myApp cordova platform add android ionic run android

一切都很完美。

所以我假设你可以安全地尝试安装最新版本的节点来构build离子应用程序。 也许节点5.4.1将解决你在节点4.2.4面临的问题?

问题在于,您正在使用self signed certificate in certificate chain错误self signed certificate in certificate chain使用自签名证书。

如果你想解决这个错误在这里给你一些信息:

但如果没有办法处理问题只需设置httpregistry(进行config字)

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

之前发生过类似的事情,那时候我的工作是什么。

首先,卸载节点和npm。 其次,删除C:\ Users \ yourname \ AppData \ Roaming中的npm和npm-cache文件夹。 最后,重新下载并重新安装node.js的新副本。

我不知道这是否会在你的情况下工作,但希望这有助于!