由于npm ERR,npm install -g dredd @ stable在CircleCI上失败了!代码ECONNRESET

时间:2017-05-23 07:46:08

标签: node.js npm circleci econnreset dredd

我在CircleCI上有一个项目,它在某些时候开始变红(由于安装dredd失败)。目前,相同的项目(相同的代码,相同的circle.yml)可能会失败或随机成功。

失败始终处于阶段npm install -g dredd@stable,并出现以下错误,该错误会多次重复并最终导致构建失败:

make: Leaving directory /opt/circleci/nodejs/v4.2.6/lib/node_modules/dredd/node_modules/dredd-transactions/node_modules/fury-adapter-apib-parser/node_modules/drafter/node_modules/protagonist/build'
npm ERR! Linux 3.13.0-117-generic
npm ERR! argv "/opt/circleci/nodejs/v4.2.6/bin/node" "/opt/circleci/nodejs/v4.2.6/bin/npm" "install" "-g" "dredd@stable"
npm ERR! node v4.2.6
npm ERR! npm  v2.14.12
npm ERR! code ECONNRESET
npm ERR! errno ECONNRESET
npm ERR! syscall read
npm ERR! network read ECONNRESET
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network 
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

如果我尝试多次重新运行构建,它将在某些时候成功(变为绿色)。然后,dredd安装会显示如下内容:

make: Leaving directory /opt/circleci/nodejs/v4.2.6/lib/node_modules/dredd/node_modules/dredd-transactions/node_modules/fury-adapter-apib-parser/node_modules/drafter/node_modules/protagonist/build'
/opt/circleci/nodejs/v4.2.6/bin/dredd -> /opt/circleci/nodejs/v4.2.6/lib/node_modules/dredd/bin/dredd
dredd@3.4.5 /opt/circleci/nodejs/v4.2.6/lib/node_modules/dredd
├── caseless@0.12.0
├── clone@2.1.1
├── file@0.2.2

etc',基本上成功安装了dredd并继续测试构建。

由于它似乎随机失败,我不认为代理与它有任何关系。以下是circle.yml文件供参考:

machine:
  environment:
    APIARY_API_KEY: "123456789ab12cd1234a1a1a123a123a"
  ruby:
    version: 2.3.1
dependencies:
  pre:
    - npm install -g dredd@stable
    - gem install apiaryio
    - pip install dredd_hooks
database:
  override:
    - bundle exec rake db:create db:schema:load db:seed
test:
  pre:
    - apiary fetch --api-name=ourAPIName --output=api-description.yml
    - dredd

欢迎任何帮助。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我找到的一个修复是将npm的注册表更改为使用HTTP而不是HTTPS。在我的circle.yml文件中,我更改了依赖项:

dependencies:
  pre:
    - npm install -g dredd@4.1.1

dependencies:
  pre:
    - npm config set registry http://registry.npmjs.org/
    - npm install -g dredd@4.1.1