运行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
使用自签名证书。
如果你想解决这个错误在这里给你一些信息:
- 在Windows上运行Npm时如何解决SSL证书错误?
- https://confluence.atlassian.com/display/SOURCETREEKB/Resolving+SSL+Self-Signed+Certificate+Errors
但如果没有办法处理问题只需设置httpregistry(进行config
字)
npm config set registry http://registry.npmjs.org/
之前发生过类似的事情,那时候我的工作是什么。
首先,卸载节点和npm。 其次,删除C:\ Users \ yourname \ AppData \ Roaming中的npm和npm-cache文件夹。 最后,重新下载并重新安装node.js的新副本。
我不知道这是否会在你的情况下工作,但希望这有助于!