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

Posted

技术标签:

【中文标题】运行 npm install cordova 时 npm install 不起作用【英文标题】:npm install does not work when running npm install cordova 【发布时间】:2016-05-03 11:54:05 【问题描述】:

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

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

【问题讨论】:

我不确定它是否相关,但您应该输入 npm install –g cordova 而不仅仅是 npm install cordova。我知道最新版本的 node/npm 存在一些问题,但它已在 cordova 5.4 和 > 我认为已修复。我刚刚用最新版本的 node 安装了一台全新的计算机,安装 cordova 没有问题。 根据离子入门 - ionicframework.com/getting-started -,它需要 Node.js 4,因为“节点 5 目前不工作!”。因此,我下载了 Node.js 4.2.4 @ArthurRonald 也许试试npm uninstall -g cordova,然后是npm install -g npm,然后是npm --loglevel info install -g cordova,至少看看是什么卡住了? 指定注册表时,必须设置主机,而不是打包路径。例如npm set registry=http://registry.npmjs.org,没有cordova部分 尝试清理缓存 npm cache clean 和/或以管理员身份运行 CMD 【参考方案1】:

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

【讨论】:

【参考方案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 中的 bug 可能是问题所在,这是 Cordova 所依赖的 missing method in the Q promises library。

2015 年 11 月,用户能够use Ionic successfully with node 5.1.0。

【讨论】:

其他设置可以在这里找到:gist.github.com/erkobridee/4061363(葡萄牙语)【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

根据错误self signed certificate in certificate chain,您正在使用自签名证书。

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

How to fix SSL certificate error when running Npm on Windows? https://confluence.atlassian.com/display/SOURCETREEKB/Resolving+SSL+Self-Signed+Certificate+Errors

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

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

【讨论】:

【参考方案5】:

好的,我认为关于节点 4 与节点 5 的注释来自于科尔多瓦 5.0 的旧时代,当时在使用节点 5 安装科尔多瓦时出现问题。

从那时起,他们发布了科尔多瓦 5.4 和科尔多瓦 6,节点 5 不再存在问题。

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

已安装科尔多瓦 6:npm install -g cordova 已安装离子 1.7.13:npm install -g ionic 创建了一个离子应用程序:ionic start myApp tabs 在安卓设备上运行应用程序

cd myApp cordova platform add android ionic run android

一切都很完美。

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

【讨论】:

以上是关于运行 npm install cordova 时 npm install 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

ionic3 npm install cordova error syscall rename

Cordova学习笔记   cordova相关的安装记录 及项目建立

npm install -g cordova err 解决办法

插件期间的版本号添加v / s npm install?

当我运行`npm install`时,它返回`ERR!代码 EINTEGRITY` (npm 5.3.0)

当我运行“npm install”时,我遇到了我不明白的 npm 问题