“ng e2e"失败可能是因为代理但“ng serve";和“ng测试"正在工作 [英] "ng e2e" is failling probably in reason of proxy but "ng serve" and "ng test" are working
问题描述
我下载 https://github.com/blizzerand/pastebin-angular可以成功运行ng test";或npm run test"(我理解两者的作用完全相同).
I download https://github.com/blizzerand/pastebin-angular and I can successfully run "ng test" or "npm run test" (I understand both do exactly the same).
C:\_pocsws_vscpastebin-angular-master>npm run test
> test-angular@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"
When I try "ng e2e" I get " 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"因为它根本不依赖代理.
So I change to "ng e2e --no-webdriver-update" since it will no rely on proxy at all.
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'"然后我尝试下载它并明确使用我的本地代理
Since I got "Could not find update-config.json. Run 'webdriver-manager update' " then I tried downlod it and explicitly use my local proxy
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 up to date".我会假设我下载正确.现在我重复ng e2e".我在上面遇到了同样的错误.因为我看到端口号 443,所以我决定尝试一下ng e2e --skip-ssl".我在上面遇到了同样的错误.我也尝试了 ng e2e --webdriver-update=false ,但我仍然得到找不到 update-config.json".
A bit confusing for me when I see " E/downloader - Expected response code 200, received: 403" but at the end I see "I/update - selenium standalone: selenium-server-standalone-3.8.1.jar up to date". I will assume that I download it correctly. Now I repeat "ng e2e" and I got same error above. Since I see port number 443, I decided try something "ng e2e --skip-ssl" and I got same error above. I tried ng e2e --webdriver-update=false as well and I still get "Could not find update-config.json".
我尝试的最后一个尝试是
The last tentative I tried was
C:\_pocsws_vscpastebin-angular-master>npm run e2e
> test-angular@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-angular@0.0.0 e2e: `ng e2e`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the test-angular@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-angular@0.0.0~pree2e: test-angular@0.0.0
6 info lifecycle test-angular@0.0.0~e2e: test-angular@0.0.0
7 verbose lifecycle test-angular@0.0.0~e2e: unsafe-perm in lifecycle true
8 verbose lifecycle test-angular@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-angular@0.0.0~e2e: CWD: C:\_pocsws_vscpastebin-angular-master
10 silly lifecycle test-angular@0.0.0~e2e: Args: [ '/d /s /c', 'ng e2e' ]
11 silly lifecycle test-angular@0.0.0~e2e: Returned: code: 1 signal: null
12 info lifecycle test-angular@0.0.0~e2e: Failed to exec e2e script
13 verbose stack Error: test-angular@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-angular@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-angular@0.0.0 e2e: `ng e2e`
22 error Exit status 1
23 error Failed at the test-angular@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
In case it is relevant, here is package.json
{
"name": "test-angular",
"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 测试"基于 Jasmine sintaxes 和ng e2e"运行测试基于 Protractor sintaxes(我知道这是非常虚拟的比较).
All tentatives I have done was after 2 days (16 hours) struggling to settup my environment. As far as I understand "ng test" run tests based on Jasmine sintaxes and "ng e2e" based on Protractor sintaxes (I know it is very dummy comparasion).
最后,当我看到两个ng serve"时,我发现问题的路径变得更加复杂.和ng测试"运行良好.
Finally, it make my route to find the issue even more complicated when I see that both "ng serve" and "ng test" are working perfectly.
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 也正确启动:
Webdriver-manager also starts correctly:
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
任何对上述可能的误解进行检查或更正的内容都将受到高度赞赏.
Anything to check or correction on possible misunderstanding above will be highly appreciatted.
- 找到解决方案后
如果我在没有建议的环境变量的情况下尝试,我得到:
if I tried without environment variables suggested, I got:
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
另一方面,设置环境变量后,我得到了:
On another hand, after setting the environment variables, I got:
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 xxxx:443
因为ng e2e
的选项--webdriver-update
的默认值为true,而且你的网络在proxy后面,所以不用告诉你的network proxy给webdriver-manager, webdriver-manger 更新将无法连接网络,这就是您看到错误的原因.
because the default value of option --webdriver-update
of ng e2e
is true, and your network behind proxy, so without telling your network proxy to webdriver-manager, webdriver-manger update will fail to connect network, this's why you see the error.
我在 https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/tasks/e2e.ts,并注意到我们不能通过后面的npm run e2e
来传递代理,但是我们可以在环境变量中设置代理,webdriver-manager
会在运行前读取,你可以关注下面的帖子在环境变量中设置代理:如何检查导致 webdriver-manager 失败的原因
I looked into the source code of ng e2e
at https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/tasks/e2e.ts, and noticed we can't pass the proxy by following behind npm run e2e
, but we can set proxy in Enviroment Variable which webdriver-manager
will read before running, you can follow below post to set proxy in Environment Varable: 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
2) when you run ng e2e --no-webdriver-update
to skip webdriver update, it report error: Error message: Could not find update-config.json
表示project_folder
ode_modulesprotractor
ode_moduleswebdriver-managerselenium
中不存在update-config.json
It means the update-config.json not exist in project_folder
ode_modulesprotractor
ode_moduleswebdriver-managerselenium
因为您使用全局 webdriver-manger
来执行 webdriver 更新,而不是项目本地 webdriver-manager
(位于 project_folder.binwebdriver-manager).
Because you used the global webdriver-manger
to execute webdriver update, rather than the project local webdriver-manager
(at project_folder.binwebdriver-manager).
正确的做法是先在cmd窗口切换到your_project文件夹,然后执行node_modules.binwebdriver-manager update --proxy http://myproxy.vm.mycompany.网:3128
然后 update-config.json 将在那里并且 ng e2e --no-webdriver-manager
现在应该可以工作了.
The correct way is switch to your_project folder in cmd window firstly, then execute node_modules.binwebdriver-manager update --proxy http://myproxy.vm.mycompany.net:3128
Then the update-config.json will be there and ng e2e --no-webdriver-manager
should work now.
ng e2e
不能使用全局webdriver-manager
,只能工程本地node_modules.binwebdriver-manger
ng e2e
can't use global webdriver-manager
, but only project local node_modules.binwebdriver-manger
npm 代理 VS 环境变量代理
1) npm 代理
npm proxy 仅适用于命令:npm
并且该命令实现不会从 evniroment 变量中读取代理,因此您必须通过命令 npm config set设置 npm 代理code> 或直接修改用户 home 或项目文件夹下的
.npmrc
文件.
npm proxy only work for the command: npm
and this command implement won't read proxy from evniroment variable, thus you have to set proxy for npm by command npm config set
or directly modify .npmrc
file under user home or project folder.
2) 环境变量代理
只有实现的工具/软件/程序/命令会从环境变量中读取代理设置,然后环境变量代理才能对其产生影响.
Only tool/soft/program/command which implement will read proxy setting from environment variable, then the environment variable proxy can effect on them.
用户很难知道环境变量代理会影响工具/软件/程序/命令,尤其是我们第一次接触的新事物.
It's not easy for user to know environment variable proxy will effect on a tool/soft/program/command, especially it's a new thing we touch for first time.
但一般情况下,我们可以认为从命令窗口执行的所有操作都会从环境变量中读取代理设置,但并不总是这样,就像 npm
一样,它只是从自己的代理设置中读取代理.
But in generally, we can think everything executed from command window will read proxy setting from environment variable, but it's not always this, Like npm
, it only read proxy from itself proxy setting.
现在回到webdriver-manager
,在大多数情况下它首先从命令窗口执行,实际上决定环境变量代理是否影响它的最终决定者是实现本身.
Now back to the webdriver-manager
, first it executed from command window in most case, actually the final determiner to decide environment variable proxy will effect on it or not is the implement itself.
在webdriver-manager
实现中,首先会读取命令行中作为选项传递的代理,如下: webdriver-manager update --proxy http://proxy.company.com:1234
In webdriver-manager
implement, firstly, it will read proxy passed as options in command line as following: webdriver-manager update --proxy http://proxy.company.com:1234
如果你没有在命令行中传递代理,那么它将从环境变量中读取代理.
If you not pass proxy in command line, then it will read proxy from environment variable.
这篇关于“ng e2e"失败可能是因为代理但“ng serve";和“ng测试"正在工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!