Angular CLI ng e2e : Error: connect ETIMEDOUT

标签 angular testing command-line-interface angular-e2e

我在使用 CLI 创建的普通新项目上运行 $ ng e2e 时遇到问题:

$ ng e2e
** NG Live Development Server is listening on localhost:49155, open your browser on http://localhost:49155/ **
Date: 2018-04-17T08:42:39.992Z
Hash: 42744fd16a957b054ef8
Time: 6402ms
chunk {inline} inline.bundle.js, inline.bundle.js.map (inline) 3.89 kB [entry] [rendered]
chunk {main} main.bundle.js, main.bundle.js.map (main) 8.22 kB [initial] [rendered]
chunk {polyfills} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 205 kB [initial] [rendered]
chunk {styles} styles.bundle.js, styles.bundle.js.map (styles) 14.5 kB [initial] [rendered]
chunk {vendor} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.76 MB [initial] [rendered]
(node:12752) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.

webpack: Compiled successfully.
events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: connect ETIMEDOUT 216.58.206.144:443
    at Object._errnoException (util.js:1022:11)
    at _exceptionWithHostPort (util.js:1044:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1198:14)
  • 听起来像是端口问题:我在 protractor.conf.js (baseUrl) 中将端口从 4200 更改为其他端口,只是为了确保这个不忙。同样的结果。
  • 我不确定这是否与我使用代理这一事实有关?错误听起来不像那样...... proxyhttps-proxy 在 npm 配置中发送,npm 本身能够通信。

一些版本提示:

Angular CLI: 1.7.4
Node: 8.10.0
OS: win32 x64
Angular: 5.2.10
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

@angular/cli: 1.7.4
@angular-devkit/build-optimizer: 0.3.2
@angular-devkit/core: 0.3.2
@angular-devkit/schematics: 0.3.2
@ngtools/json-schema: 1.2.0
@ngtools/webpack: 1.10.2
@schematics/angular: 0.3.2
@schematics/package-update: 0.3.2
typescript: 2.5.3
webpack: 3.11.0

Protractor 配置(由 CLI 创建):

const { SpecReporter } = require('jasmine-spec-reporter');

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './e2e/**/*.e2e-spec.ts'
  ],
  capabilities: {
    'browserName': 'chrome'
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function() {}
  },
  onPrepare() {
    require('ts-node').register({
      project: 'e2e/tsconfig.e2e.json'
    });
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
  }
};

有什么想法吗?

最佳答案

好的,在进一步深入研究之后,我认为 ng e2e将在内部调用 webdriver-manager update - 但是这个失败了,因为缺少代理设置。它尊重HTTPS_PROXY env 变量,当我设置它时它运行良好。在这里找到答案:https://stackoverflow.com/a/48330603/598516

window : set HTTPS_PROXY=http://<user>:'<password>'@xxx.xxx.xxx.xxx:xxxx

关于Angular CLI ng e2e : Error: connect ETIMEDOUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49873862/

相关文章:

javascript - 如何在 Cypress 中使用不同的数据集多次运行测试?

scala - 在 FakeRequest 中使用 MultipartFormData 进行框架测试

go - 如果用户输入不正确的数据应用程序必须重复问题

angular - 如何使用Angular计算表格列的总和并在页脚中显示?

typescript - 找不到 404 router.umd.js,Angular 2

java - 在 wiremock 中,是否可以根据请求记录 cookie?

perl - 使用 -n 或 -p 选项时是否可以将命令行参数传递给 @ARGV?

用于 SSL 服务器的 Linux 命令行?

html - 如何根据 Angular4 中的条件禁用跨度

arrays - 如何将 64 进制转换为字节数组?