运行 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 解决办法