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

时间:2016-01-26 19:14:28

标签: node.js cordova installation npm

我正在使用Ionic框架来构建混合应用程序。根据官方网站,我需要获得Node.js的4.2.4版本,其中包括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 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' ]

这一次,它不会抱怨任何其他事情。相反,加载指示器 - 管道字符 - 继续运行和运行。那么,我该怎么做才能下载这种依赖?

5 个答案:

答案 0 :(得分:2)

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

证书错误可能是由于出站SSL代理造成的。有人,很可能是您的雇主,在出路时打开所有SSL流量。要修复它,您需要通过导入正在使用的代理的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中可能存在问题的错误是missing method in the Q promises library,Cordova依赖该错误。

2015年11月,用户可以use Ionic successfully with node 5.1.0

答案 1 :(得分:2)

即使我在执行任何npm install -g XXX命令时遇到同样的问题,它也由npm config set strict-ssl false解决了

答案 2 :(得分:0)

好的,我认为关于节点4与节点5的说明来自cordova 5.0的旧时代,当安装带有节点5的cordova时出现问题。

从那时起,他们发布了cordova 5.4和cordova 6,其中节点5没有问题。

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

  • 已安装cordova 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

一切都很完美。

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

答案 3 :(得分:0)

问题是您根据错误self signed certificate in certificate chain使用自签名证书。

如果您想在此处修正错误,请为您提供一些信息:

但如果没有办法处理问题只需设置http注册表(随身携带config字)

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

答案 4 :(得分:-1)

之前发生过类似的事情,当时对我有用的是。

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

我不确定这是否适用于你的情况,但希望这会有所帮助!!