【问题标题】:npm install does not work when running npm install cordova运行 npm install cordova 时 npm install 不起作用
【发布时间】: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

标签: node.js cordova installation npm


【解决方案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

    【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

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

      但是如果没有办法处理问题就设置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 中遇到的问题?

        【讨论】:

          猜你喜欢
          • 2018-04-17
          • 2017-11-12
          • 2019-03-06
          • 2018-03-24
          • 1970-01-01
          • 2017-02-28
          • 1970-01-01
          • 2018-11-22
          相关资源
          最近更新 更多