Угловой 7 e2e подключить ETIMEDOUT, туннельный сокет не может быть установлен - PullRequest
0 голосов
/ 17 января 2019

Я хочу использовать тесты e2e в своем проекте Angular с использованием транспортира. Запуск ng e2e вызовет ошибку

Error: connect ETIMEDOUT 216.58.201.112:443
at Object._errnoException (util.js:992:11)
at _exceptionWithHostPort (util.js:1014:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1186:14)

Я следовал этой настройке. Сначала я настроил переменную окружения Windows HTTP_PROXY.

enter image description here

Затем я создал src/proxy.conf.js, так что это выглядит так.

var HttpsProxyAgent = require('https-proxy-agent');

// https://angular.io/guide/build#proxying-to-a-backend-server
var proxyConfig = [{
  context: '/api',
  // target: 'http://your-remote-server.com:3000',
  target: 'http://172.24.61.70',
  secure: false
}];

function setupForCorporateProxy(proxyConfig) {
  var proxyServer = process.env.http_proxy || process.env.HTTP_PROXY;
  if (proxyServer) {
    var agent = new HttpsProxyAgent(proxyServer);
    console.log('Using corporate proxy server: ' + proxyServer);
    proxyConfig.forEach(function(entry) {
      entry.agent = agent;
    });
  }
  return proxyConfig;
}

module.exports = setupForCorporateProxy(proxyConfig);

Наконец я добавил serve к architect в angular.json.

"architect": {
    "e2e": {
      ...
    },
    "serve": {
      "builder": "@angular-devkit/build-angular:dev-server",
      "options": {
        "browserTarget": "my-portal:build",
        "proxyConfig": "src/proxy.conf.js"
      }
    },
    "lint": {
      ...
    }
  }

Теперь я получаю сообщение об ошибке:

Error: tunneling socket could not be established, cause=getaddrinfo ENOTFOUND 8080 8080:80
at ClientRequest.onError (C:\projects\star-card-frontend\node_modules\tunnel-agent\index.js:177:17)
at Object.onceWrapper (events.js:315:30)
at emitOne (events.js:116:13)
at ClientRequest.emit (events.js:211:7)
at Socket.socketErrorListener (_http_client.js:387:9)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)

EDIT

По сомным причинам tunnel-agent получает неверные параметры прокси:

{  
   host:'8080',
   port:0,
   proxyAuth:null,
   headers:{  
      host:'chromedriver.storage.googleapis.com:443'
   }
}

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Хорошо, копание node_modules показало, что анализатор в url.js, используемый в tunnel.js, проанализировал мою переменную окружения HTTP_PROXY, но ожидал полного ulr с протоколом. Поэтому добавление протокола в HTTP_PROXY => http://172.24.72.10:8080 устранило проблему.

0 голосов
/ 17 января 2019

Попробуйте установить прокси в конфигурации своего транспортира. Установите stg вот так:

config = {
    capabilities: {
        proxy: {
            proxyType: 'system'
            httpProxy: process.env.http_proxy || process.env.HTTP_PROXY
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...