【问题标题】:Angular2 @angular/cli e2e Error: tunneling socket could not be established, statusCode=400Angular2 @angular/cli e2e 错误:无法建立隧道套接字,statusCode=400
【发布时间】:2017-03-09 12:01:01
【问题描述】:

我的 e2e 测试运行良好,突然*此错误出现。我已经尝试调试了一段时间,但仍然一无所知。

*suddenly = 可能升级 Windows。 (还没有确定) & 改成新的@angular/cli(我相信更新后效果很好,但记不太清了)

  • 平台:Windows 10 专业版
  • 代理:在公司代理后面。 (尝试在以管理员身份运行时在 CMD 中设置代理)

有什么提示会出错吗?任何关于哪个方向的输入也非常感谢。我现在几乎一无所知!

proxy.bat

set PROXY="http://xxxx.xxxx.com:3128"
set HTTP_PROXY=%PROXY%
set HTTPS_PROXY=%PROXY%

错误日志

> ng e2e
> ** NG Live Development Server is running on http://localhost:49152 **   0% compiling    10% building modules 0/1    .   .   .
> webpack: Compiled successfully. events.js:160
>       throw er; // Unhandled 'error' event
>       ^
> 
> Error: tunneling socket could not be established, statusCode=400
>     at ClientRequest.onConnect (C:\xxxxx\xxxx\web\angular\node_modules\tunnel-agent\index.js:165:19)
>     at ClientRequest.g (events.js:291:16)
>     at emitThree (events.js:116:13)
>     at ClientRequest.emit (events.js:194:7)
>     at Socket.socketOnData (_http_client.js:395:11)
>     at emitOne (events.js:96:13)
>     at Socket.emit (events.js:188:7)
>     at readableAddChunk (_stream_readable.js:176:18)
>     at Socket.Readable.push (_stream_readable.js:134:10)
>     at TCP.onread (net.js:548:20)

package.json

{
  "name": "angular",
  "version": "0.0.0",
  "license": "MIT",
  "angular-cli": {},
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "lint": "tslint \"src/**/*.ts\" --project src/tsconfig.json --type-check && tslint \"e2e/**/*.ts\" --project e2e/tsconfig.json --type-check",
    "test": "ng test",
    "pree2e": "webdriver-manager update --standalone false --gecko false",
    "e2e": "protractor",
    "mavenbuild": "node ./node/node_modules/angular-cli/bin/ng build --prod --base-href ngrepair-web"
  },
  "private": true,
  "dependencies": {
    "@angular/common": "^2.4.0",
    "@angular/compiler": "^2.4.0",
    "@angular/core": "^2.4.0",
    "@angular/forms": "^2.4.0",
    "@angular/http": "^2.4.0",
    "@angular/platform-browser": "^2.4.0",
    "@angular/platform-browser-dynamic": "^2.4.0",
    "@angular/router": "^3.4.0",
    "core-js": "^2.4.1",
    "primeng": "^2.0.0",
    "rxjs": "^5.1.0",
    "ts-helpers": "^1.1.1",
    "zone.js": "^0.7.6"
  },
  "devDependencies": {
    "@angular/cli": "^1.0.0-rc.0",
    "@angular/compiler-cli": "^2.4.0",
    "@types/jasmine": "2.5.38",
    "@types/node": "~6.0.60",
    "codelyzer": "~2.0.0",
    "jasmine-core": "2.5.2",
    "jasmine-spec-reporter": "2.5.0",
    "karma": "~1.4.1",
    "karma-chrome-launcher": "~2.0.0",
    "karma-cli": "~1.0.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "karma-coverage-istanbul-reporter": "^0.2.0",
    "karma-spec-reporter": "0.0.28",
    "protractor": "~5.1.1",
    "ts-node": "~2.0.0",
    "tslint": "~4.4.2",
    "typescript": "~2.0.0"
  }
}

protractor.conf.js

// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts

/*global jasmine */
var SpecReporter = require('jasmine-spec-reporter');

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

【问题讨论】:

  • 你解决了吗?
  • 是的,问题与代理设置有关。您是否支持公司代理?
  • 是的。我尝试设置环境变量等,但这似乎不起作用。
  • 我已在此处发布了我的修复程序,检查这是否适合您。如果您需要任何进一步的解释,请告诉我。
  • @Jeff 成功了吗?

标签: angular selenium-webdriver protractor angular-cli


【解决方案1】:

确保您拥有最新的nodenpmprotractor


要为 npm 设置代理,请将其添加到您的 .npmrc 文件中(npm config list 将显示用户配置文件的位置):

proxy=http://proxy_url:port
https-proxy=http://proxy_url:port
registry=http://registry.npmjs.org/
strict-ssl=false

如果代理有身份验证,则使用http://username:password@proxy_url:port

尝试以下任一方法以查看上述更改是否有效:

npm config list;//also shows location of user settings file
npm config ls -l;//shows all defaults

要让量角器拾取您的代理,请在 cmd 中执行以下操作: (相关pull request

set HTTP_PROXY=http://proxy_url:port
set HTTPS_PROXY=http://proxy_url:port

要在 Windows 中查找代理 URL,请打开 Internet Explorer。

转到工具>Internet 选项>连接>局域网设置

在[✓]使用自动配置脚本中,您可以找到指向.pac 文件的链接,或者您会从这里自己获取代理网址。如果是.pac,请打开浏览器中的 url 并在下载 pac 文件时打开它,在文件末尾查找类似以下内容:

return "PROXY 120.42.240.53:3281; DIRECT";//this is your proxy URL.

(这对我有用,但是如果您搜索它,还有其他不同的解决方案)


除此之外,我还从 node_modules 文件夹中删除了 readonly

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 2016-04-19
    • 2014-11-21
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多