繁体   English   中英

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

[英]npm install does not work when running npm install cordova

我正在使用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' ]

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

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

证书错误可能是由于出站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中的错误是Q promises库中缺少的方法 ,Cordova依赖它。

2015年11月,用户能够成功使用Ionic与节点5.1.0

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

好吧,我认为关于节点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中遇到的问题?

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

如果您想在此处修复错误,请为您提供以下信息:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM