“ng e2e”可能因代理而失败,但“ng serve”和“ng test”正在运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“ng e2e”可能因代理而失败,但“ng serve”和“ng test”正在运行相关的知识,希望对你有一定的参考价值。

我下载https://github.com/blizzerand/pastebin-angular,我可以成功运行“ng test”或“npm run test”(我知道两者都完全相同)。

C:\_pocsws_vscpastebin-angular-master>npm run test

    > test-angulr@0.0.0 test C:\_pocsws_vscpastebin-angular-master
    > ng test

     10% building modules 1/1 modules 0 active29 12 2017 18:13:27.927:WARN [karma]: No captured browser, open http://localhost:9876/
    29 12 2017 18:13:27.998:INFO [karma]: Karma v1.7.0 server started at http://0.0.0.0:9876/
    29 12 2017 18:13:28.002:INFO [launcher]: Launching browsers Chrome, ChromeNoSandboxHeadless with unlimited concurrency
    29 12 2017 18:13:28.013:INFO [launcher]: Starting browser Chrome
    29 12 2017 18:13:28.032:INFO [launcher]: Starting browser Chrome              29 12 2017 18:13:39.229:WARN [karma]: No captured browser, open http://localhost:9876/
    29 12 2017 18:13:40.708:INFO [HeadlessChrome 0.0.0 (Windows 10 0.0.0)]: Connected on socket UDrOcB34PHgK-7M-AAAB with id 48647093
    29 12 2017 18:13:40.708:INFO [Chrome 63.0.3239 (Windows 10 0.0.0)]: Connected on socket 8ZsdfQHAmDKzVaoHAAAA with id 86143812
    Chrome 63.0.3239 (Windows 10 0.0.0): Executed 31 of 31 SUCCESS (3.745 secs / 3.714 secs)
    HeadlessChrome 0.0.0 (Windows 10 0.0.0): Executed 31 of 31 SUCCESS (3.807 secs / 3.779 secs)
    TOTAL: 62 SUCCESS
    TOTAL: 62 SUCCESS

当我尝试“ng e2e”时,我得到“ETIMEDOUT x.x.x.x:443”

C:\_pocsws_vscpastebin-angular-master>ng e2e
Your global Angular CLI version (1.6.3) is greater than your local
version (1.1.0). The local Angular CLI version is used.

To disable this warning use "ng set --global warnings.versionMismatch=false".
** NG Live Development Server is listening on localhost:49152, open your browser on http://localhost:49152 **
(node:5784) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
Hash: 5891176eb0b28d7d1f89
Time: 12097ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 29.2 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.82 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: connect ETIMEDOUT x.x.x.x:443
    at Object._errnoException (util.js:1024:11)
    at _exceptionWithHostPort (util.js:1046:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1182:14)

所以我改为“ng e2e --no-webdriver-update”,因为它根本不依赖代理。

C:\_pocsws_vscpastebin-angular-master>ng e2e --no-webdriver-update
Your global Angular CLI version (1.6.3) is greater than your local
version (1.1.0). The local Angular CLI version is used.

To disable this warning use "ng set --global warnings.versionMismatch=false".
** NG Live Development Server is listening on localhost:49152, open your browser on http://localhost:49152 **
(node:14496) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
Hash: 5891176eb0b28d7d1f89
Time: 13274ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 29.2 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.82 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
[18:20:39] I/launcher - Running 1 instances of WebDriver
[18:20:39] I/direct - Using ChromeDriver directly...
[18:20:39] E/direct - Error code: 135
[18:20:39] E/direct - Error message: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.
[18:20:39] E/direct - Error: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.
    at Direct.getNewDriver (C:\_pocsws_vscpastebin-angular-master
ode_modulesprotractoruiltdriverProvidersdirect.js:63:31)
    at Runner.createBrowser (C:\_pocsws_vscpastebin-angular-master
ode_modulesprotractoruilt
unner.js:195:43)
    at q.then.then (C:\_pocsws_vscpastebin-angular-master
ode_modulesprotractoruilt
unner.js:339:29)
    at _fulfilled (C:\_pocsws_vscpastebin-angular-master
ode_modulesprotractor
ode_modulesqq.js:834:54)
    at self.promiseDispatch.done (C:\_pocsws_vscpastebin-angular-master
ode_modulesprotractor
ode_modulesqq.js:863:30)
    at Promise.promise.promiseDispatch (C:\_pocsws_vscpastebin-angular-master
ode_modulesprotractor
ode_modulesqq.js:796:13)
    at C:\_pocsws_vscpastebin-angular-master
ode_modulesprotractor
ode_modulesqq.js:556:49
    at runSingle (C:\_pocsws_vscpastebin-angular-master
ode_modulesprotractor
ode_modulesqq.js:137:13)
    at flush (C:\_pocsws_vscpastebin-angular-master
ode_modulesprotractor
ode_modulesqq.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
[18:20:39] E/launcher - Process exited with error code 135

由于我得到“找不到update-config.json。运行'webdriver-manager update'”然后我尝试下载它并显式使用我的本地代理

C:\_pocsws_vscpastebin-angular-master>webdriver-manager update --proxy http://myproxy.vm.mycompany.net:3128
[18:23:19] I/update - geckodriver: file exists C:UsersdcaAppDataRoaming
vmv8.9.3
ode_modulesprotractor
ode_moduleswebdriver-managerseleniumgeckodriver-v0.19.1.zip
[18:23:19] I/update - geckodriver: unzipping geckodriver-v0.19.1.zip
[18:23:19] I/update - geckodriver: geckodriver-v0.19.1.exe up to date
[18:23:20] E/downloader - Expected response code 200, received: 403
[18:23:20] I/update - chromedriver: file exists C:UsersdcaAppDataRoaming
vmv8.9.3
ode_modulesprotractor
ode_moduleswebdriver-managerseleniumchromedriver_2.34.zip
[18:23:20] I/update - chromedriver: unzipping chromedriver_2.34.zip
(node:14648) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Invalid filename
(node:14648) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
[18:24:29] I/update - selenium standalone: file exists C:UsersdcaAppDataRoaming
vmv8.9.3
ode_modulesprotractor
ode_moduleswebdriver-managerseleniumselenium-server-standalone-3.8.1.jar
[18:24:29] I/update - selenium standalone: selenium-server-standalone-3.8.1.jar up to date

当我看到“E / downloader - 预期的响应代码200,收到:403”时,我有点困惑,但最后我看到“I / update - selenium standalone:selenium-server-standalone-3.8.1.jar是最新的”。我会假设我正确下载它。现在我重复“ng e2e”,我得到了同样的错误。由于我看到端口号443,我决定尝试一些“ng e2e --skip-ssl”,我得到了同样的错误。我也尝试了e2e --webdriver-update = false,我仍然得到“找不到update-config.json”。

我试过的最后一个尝试是

C:\_pocsws_vscpastebin-angular-master>npm run e2e

> test-angulr@0.0.0 e2e C:\_pocsws_vscpastebin-angular-master
> ng e2e

** NG Live Development Server is listening on localhost:49152, open your browser on http://localhost:49152 **
(node:9036) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
Hash: 5891176eb0b28d7d1f89
Time: 11115ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 29.2 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.82 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: connect ETIMEDOUT 172.217.17.48:443
    at Object._errnoException (util.js:1024:11)
    at _exceptionWithHostPort (util.js:1046:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1182:14)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! test-angulr@0.0.0 e2e: `ng e2e`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the test-angulr@0.0.0 e2e script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:UsersdcaAppDataRoaming
pm-cache\_logs2017-12-29T17_33_44_400Z-debug.log

这是日志

0 info it worked if it ends with ok
1 verbose cli [ 'C:\Program Files\nodejs\node.exe',
1 verbose cli   'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js',
1 verbose cli   'run',
1 verbose cli   'e2e' ]
2 info using npm@5.5.1
3 info using node@v8.9.3
4 verbose run-script [ 'pree2e', 'e2e', 'poste2e' ]
5 info lifecycle test-angulr@0.0.0~pree2e: test-angulr@0.0.0
6 info lifecycle test-angulr@0.0.0~e2e: test-angulr@0.0.0
7 verbose lifecycle test-angulr@0.0.0~e2e: unsafe-perm in lifecycle true
8 verbose lifecycle test-angulr@0.0.0~e2e: PATH: C:UsersdcaAppDataRoaming
vmv8.9.3
ode_modules
pmin
ode-gyp-bin;C:\_pocsws_vscpastebin-angular-master
ode_modules.bin;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:WINDOWSSystem32WindowsPowerShellv1.0;C:WindowsCCM;C:Program Files (x86)GnuWin32in;C:Program Files (x86)SkypePhone;C:\_t3gradle-3.5in;C:Program Files (x86)Subversionin;C:Program FilesGitcmd;C:Program Files (x86)Yarnin;C:Program FilesTortoiseSVNin;C:UsersdcaAppDataRoaming
vm;C:Program Files
odejs;C:UsersdcaAppDataLocalMicrosoftWindowsApps;C:Program FilesJavajdk1.8.0_112in;C:\_tmavenin;C:UsersdcaAppDataLocalGitHubDesktopin;C:Program FilesMicrosoft VS Codein;C:UsersdcaAppDataLocalYarnin;C:UsersdcaAppDataRoaming
vm;C:Program Files
odejs
9 verbose lifecycle test-angulr@0.0.0~e2e: CWD: C:\_pocsws_vscpastebin-angular-master
10 silly lifecycle test-angulr@0.0.0~e2e: Args: [ '/d /s /c', 'ng e2e' ]
11 silly lifecycle test-angulr@0.0.0~e2e: Returned: code: 1  signal: null
12 info lifecycle test-angulr@0.0.0~e2e: Failed to exec e2e script
13 verbose stack Error: test-angulr@0.0.0 e2e: `ng e2e`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (C:UsersdcaAppDataRoaming
vmv8.9.3
ode_modules
pm
ode_modules
pm-lifecycleindex.js:280:16)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at EventEmitter.emit (events.js:214:7)
13 verbose stack     at ChildProcess.<anonymous> (C:UsersdcaAppDataRoaming
vmv8.9.3
ode_modules
pm
ode_modules
pm-lifecyclelibspawn.js:55:14)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at ChildProcess.emit (events.js:214:7)
13 verbose stack     at maybeClose (internal/child_process.js:925:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid test-angulr@0.0.0
15 verbose cwd C:\_pocsws_vscpastebin-angular-master
16 verbose Windows_NT 10.0.14393
17 verbose argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "run" "e2e"
18 verbose node v8.9.3
19 verbose npm  v5.5.1
20 error code ELIFECYCLE
21 error errno 1
22 error test-angulr@0.0.0 e2e: `ng e2e`
22 error Exit status 1
23 error Failed at the test-angulr@0.0.0 e2e script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

如果它是相关的,这里是package.json

{
  "name": "test-angulr",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^4.0.0",
    "@angular/common": "^4.0.0",
    "@angular/compiler": "^4.0.0",
    "@angular/core": "^4.0.0",
    "@angular/forms": "^4.0.0",
    "@angular/http": "^4.0.0",
    "@angular/platform-browser": "^4.0.0",
    "@angular/platform-browser-dynamic": "^4.0.0",
    "@angular/router": "^4.0.0",
    "@types/faker": "^4.1.0",
    "angular-in-memory-web-api": "^0.3.2",
    "core-js": "^2.4.1",
    "faker": "^4.1.0",
    "rxjs": "^5.1.0",
    "zone.js": "^0.8.4"
  },
  "devDependencies": {
    "@angular/cli": "1.1.0",
    "@angular/compiler-cli": "^4.0.0",
    "@angular/language-service": "^4.0.0",
    "@types/jasmine": "2.5.45",
    "@types/node": "~6.0.60",
    "codelyzer": "~3.0.1",
    "jasmine-core": "~2.6.2",
    "jasmine-spec-reporter": "~4.1.0",
    "karma": "~1.7.0",
    "karma-chrome-launcher": "~2.1.1",
    "karma-cli": "~1.0.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "protractor": "~5.1.2",
    "ts-node": "~3.0.4",
    "tslint": "~5.3.2",
    "typescript": "~2.3.3"
  }
}

我所做的所有试验都是在2天(16小时)之后努力解决我的环境问题。据我所知,“ng test”运行基于Jasmine sintaxes的测试和基于Protractor sintaxes的“ng e2e”(我知道这是非常虚拟的比较)。

最后,当我看到“ng服务”和“ng测试”都工作得很好时,它让我发现问题的路线更加复杂。

C:\_pocsws_vscpastebin-angular-master>ng serve
Your global Angular CLI version (1.6.3) is greater than your local
version (1.1.0). The local Angular CLI version is used.

To disable this warning use "ng set --global warnings.versionMismatch=false".
** NG Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200 **
Hash: 68480633f4a6979c64f6
Time: 12524ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 29.2 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.82 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.

...

C:\_pocsws_vscpastebin-angular-master>ng test
Your global Angular CLI version (1.6.3) is greater than your local
version (1.1.0). The local Angular CLI version is used.

To disable this warning use "ng set --global warnings.versionMismatch=false".
 10% building modules 1/1 modules 0 active29 12 2017 18:46:45.409:WARN [karma]: No captured browser, open http://localhost:9876/
29 12 2017 18:46:45.487:INFO [karma]: Karma v1.7.0 server started at http://0.0.0.0:9876/
29 12 2017 18:46:45.487:INFO [launcher]: Launching browsers Chrome, ChromeNoSandboxHeadless with unlimited concurrency
29 12 2017 18:46:45.502:INFO [launcher]: Starting browser Chrome
29 12 2017 18:46:45.523:INFO [launcher]: Starting browser Chrome              29 12 2017 18:46:57.058:WARN [karma]: No captured browser, open http://localhost:9876/
29 12 2017 18:46:58.843:INFO [Chrome 63.0.3239 (Windows 10 0.0.0)]: Connected on socket ZyuotOYE2ISz30vzAAAA with id 41727568
29 12 2017 18:46:58.910:INFO [HeadlessChrome 0.0.0 (Windows 10 0.0.0)]: Connected on socket yBro2KHiWGptHCihAAAB with id 10384190
Chrome 63.0.3239 (Windows 10 0.0.0): Executed 31 of 31 SUCCESS (4.328 secs / 4.288 secs)
HeadlessChrome 0.0.0 (Windows 10 0.0.0): Executed 31 of 31 SUCCESS (4.279 secs / 4.24 secs)
TOTAL: 62 SUCCESS
TOTAL: 62 SUCCESS

Webdriver-manager也正确启动:

C:\_pocsws_vscpastebin-angular-master>webdriver-manager start proxy http://xxx.vm.xxx.net:3128
[18:52:18] I/start - java -Dwebdriver.gecko.driver=C:UsersdcaAppDataRoaming
vmv8.9.3
ode_modulesprotractor
ode_moduleswebdriver-managerseleniumgeckodriver-v0.19.1.exe -jar C:UsersdcaAppDataRoaming
vmv8.9.3
ode_modulesprotractor
ode_moduleswebdriver-managerseleniumselenium-server-standalone-3.8.1.jar -port 4444
[18:52:18] I/start - seleniumProcess.pid: 11540
18:52:19.437 INFO - Selenium build info: version: '3.8.1', revision: '6e95a6684b'
18:52:19.438 INFO - Launching a standalone Selenium Server
2017-12-29 18:52:19.546:INFO::main: Logging initialized @387ms to org.seleniumhq.jetty9.util.log.StdErrLog
18:52:19.577 INFO - Using `new FirefoxOptions()` is preferred to `DesiredCapabilities.firefox()`
18:52:19.593 INFO - Using `new ChromeOptions()` is preferred to `DesiredCapabilities.chrome()`
18:52:19.608 INFO - Using `new EdgeOptions()` is preferred to `DesiredCapabilities.edge()`
18:52:19.608 INFO - Driver class not found: com.opera.core.systems.OperaDriver                                          18:52:19.608 INFO - Using `new OperaOptions()` is preferred to `DesiredCapabilities.operaBlink()`
18:52:19.608 INFO - Using `new SafariOptions()` is preferred to `DesiredCapabilities.safari()`
18:52:19.608 INFO - Driver class not found: org.openqa.selenium.phantomjs.PhantomJSDriver                               18:52:19.655 INFO - Driver provider class org.openqa.selenium.safari.SafariDriver registration is skipped:               registration capabilities Capabilities {browserName: safari, platform: MAC, version: } does not match the current platform WIN10
18:52:19.702 INFO - Using `new ChromeOptions()` is preferred to `DesiredCapabilities.chrome()`
18:52:19.702 INFO - Using `new EdgeOptions()` is preferred to `DesiredCapabilities.edge()`                              18:52:19.702 INFO - Using `new FirefoxOptions()` is preferred to `DesiredCapabilities.firefox()`
18:52:19.702 INFO - Using `new OperaOptions()` is preferred to `DesiredCapabilities.operaBlink()`                       18:52:19.702 INFO - Using `new SafariOptions()` is preferred to `DesiredCapabilities.safari()`
18:52:19.718 INFO - Using the passthrough mode handler
2017-12-29 18:52:19.751:INFO:osjs.Server:main: jetty-9.4.7.v20170914
2017-12-29 18:52:19.778:WARN:osjs.SecurityHandler:main: ServletContext@o.s.j.s.ServletContextHandler@757942a1{/,null,STARTING} has uncovered http methods for path: /
2017-12-29 18:52:19.787:INFO:osjsh.ContextHandler:main: Started o.s.j.s.ServletContextHandler@757942a1{/,null,AVAILABLE}2017-12-29 18:52:19.913:INFO:osjs.AbstractConnector:main: Started ServerConnector@27d415d9{HTTP/1.1,[http/1.1]}{0.0.0.0:4444}
2017-12-29 18:52:19.916:INFO:osjs.Server:main: Started @756ms
18:52:19.917 INFO - Selenium Server is up and running

任何检查或纠正上述可能的误解的行为都将受到高度赞赏。

  • 解决方案发现后编辑:

如果我尝试没有建议的环境变量,我得到:

C:\_pocsws_vscpastebin-angular-master>ng e2e
Your global Angular CLI version (1.6.3) is greater than your local
version (1.1.0). The local Angular CLI version is used.

To disable this warning use "ng set --global warnings.versionMismatch=false".
** NG Live Development Server is listening on localhost:49152, open your browser on http://localhost:49152 **
(node:8044) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
Hash: 5891176eb0b28d7d1f89
Time: 12039ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 29.2 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.82 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
[16:12:48] E/downloader - Connection timeout downloading: https://chromedriver.storage.googleapis.com/2.34/chromedriver_win32.zip. Default timeout is 4 minutes.
[16:12:48] I/update - chromedriver: file exists C:\_pocsws_vscpastebin-angular-master
ode_modulesprotractor
ode_moduleswebdriver-managerseleniumchromedriver_2.34.zip
[16:12:48] I/update - chromedriver: unzipping chromedriver_2.34.zip
[16:12:49] I/update - chromedriver: chromedriver_2.34.exe up to date
[16:12:49] I/launcher - Running 1 instances of WebDriver
[16:12:49] I/direct - Using ChromeDriver directly...
[16:12:49] E/downloader - Connection timeout downloading: https://chromedriver.storage.googleapis.com/2.34/chromedriver_win32.zip. Default timeout is 4 minutes.

DevTools listening on ws://127.0.0.1:12268/devtools/browser/71d97023-dae5-4b24-8ecc-98922db60bf5
Jasmine started

Executed 0 of 0 specs SUCCESS in 0.002 sec.
[16:12:53] I/launcher - 0 instance(s) of WebDriver still running
[16:12:53] I/launcher - chrome #01 passed

另一方面,在设置环境变量后,我得到了:

C:\_pocsws_vscpastebin-angular-master>ng e2e
Your global Angular CLI version (1.6.3) is greater than your local
version (1.1.0). The local Angular CLI version is used.

To disable this warning use "ng set --global warnings.versionMismatch=false".
** NG Live Development Server is listening on localhost:49152, open your browser on http://localhost:49152 **
(node:2288) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
Hash: 5891176eb0b28d7d1f89
Time: 12368ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 29.2 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.82 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
[16:19:30] I/update - chromedriver: file exists C:\_pocsws_vscpastebin-angular-master
ode_modulesprotractor
ode_moduleswebdriver-managerseleniumchromedriver_2.34.zip
[16:19:30] I/update - chromedriver: unzipping chromedriver_2.34.zip
[16:19:30] I/update - chromedriver: chromedriver_2.34.exe up to date
[16:19:30] I/launcher - Running 1 instances of WebDriver
[16:19:30] I/direct - Using ChromeDriver directly...

DevTools listening on ws://127.0.0.1:12462/devtools/browser/86f2d2f5-3312-48e6-8d05-25241eeba843
Jasmine started

Executed 0 of 0 specs SUCCESS in 0.003 sec.
[16:19:34] I/launcher - 0 instance(s) of WebDriver still running
[16:19:34] I/launcher - chrome #01 passed
答案

1)当你运行ng e2e时,它报告错误:Error: connect ETIMEDOUT x.x.x.x:443

因为--webdriver-update的选项ng e2e的默认值为true,并且你的网络在代理后面,所以在不告诉你的网络代理到webdriver-manager的情况下,webdriver-manger更新将无法连接网络,这就是你看错的原因。

我在ng e2e查看了https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/tasks/e2e.ts的源代码,并注意到我们无法通过跟随npm run e2e传递代理,但我们可以在环境变量中设置代理,webdriver-manager将在运行之前读取,您可以按照以下帖子在环境中设置代理可以:how to check what is causing webdriver-manager to fail

2)当你运行ng e2e --no-webdriver-update跳过webdriver更新时,它报告错误:Error message: Could not find update-config.json

这意味着project_folder ode_modulesprotractor ode_moduleswebdriver-managerselenium中不存在update-config.json

因为您使用全局webdriver-manger来执行webdriver更新,而不是项目本地webdriver-manager(在project_folder .bin webdriver-manager)。

正确的方法是首先在cmd窗口中切换到your_project文件夹,然后执行node_modules.binwebdriver-manager update --proxy http://myproxy.vm.mycompany.net:3128然后update-config.json将在那里,ng e2e --no-webdriver-manager现在可以正常工作。

ng e2e不能使用全球webdriver-manager,但只投影本地node_modules.binwebdriver-manger

npm proxy VS环境变量代理

1)npm代理

npm proxy仅适用于命令:npm和此命令工具不会从evniroment变量读取代理,因此您必须通过命令npm config set为npm设置代理,或直接修改用户主目录或项目文件夹下的.npmrc文件。

2)环境变量代理

只有工具/软件/程序/命令实现将从环境变量读取代理设置,然后环境变量代理可以对它们产生影响。

用户不容易知道环境变量代理会对工具/软件/程序/命令产生影响,尤其是这是我们第一次触摸的新事物。

但总的来说,我们可以认为从命令窗口执行的所有内容都将从环境变量中读取代理设置,但并不总是这样,就像npm一样,它只从自身代理设置中读取代理。

现在回到webdriver-manager,首先它在大多数情况下从命令窗口执行,实际上决定环境变量代理将对其产生影响的最终决定因素是工具本身。

webdriver-manager实现中,首先,它将读取在命令行中作为选项传递的代理如下:webdriver-manager update --proxy http://proxy.company.com:1234

如果您没有在命令行中传递代理,那么它将从环境变量中读取代理。

以上是关于“ng e2e”可能因代理而失败,但“ng serve”和“ng test”正在运行的主要内容,如果未能解决你的问题,请参考以下文章

VSO 构建代理因缺少 pfx 而失败

如何使用“ng e2e”对节点服务器而不是 webpack-dev-server 运行量角器测试

VSTS构建代理程序因获取源而失败:权限被拒绝

使用 SQL 代理运行 SSIS 包时出现问题 - 因“DTSER_FAILURE(1)”而失败

sprintf_s() 因“调试断言失败”错误而失败

markdown Angular CLI:ng lint,ng test,ng e2e