File tree Expand file tree Collapse file tree 1 file changed +21
-8
lines changed
packages/@angular/cli/tasks Expand file tree Collapse file tree 1 file changed +21
-8
lines changed Original file line number Diff line number Diff line change @@ -273,14 +273,27 @@ export default Task.extend({
273273 }
274274
275275 return new Promise ( ( _resolve , reject ) => {
276- server . listen ( serveTaskOptions . port , serveTaskOptions . host , ( err : any , _stats : any ) => {
277- if ( err ) {
278- return reject ( err ) ;
279- }
280- if ( serveTaskOptions . open ) {
281- opn ( serverAddress ) ;
282- }
283- } ) ;
276+ const httpServer = server . listen (
277+ serveTaskOptions . port ,
278+ serveTaskOptions . host ,
279+ ( err : any , _stats : any ) => {
280+ if ( err ) {
281+ return reject ( err ) ;
282+ }
283+ if ( serveTaskOptions . open ) {
284+ opn ( serverAddress ) ;
285+ }
286+ } ) ;
287+ // Node 8.0 - 8.4 has a keepAliveTimeout bug which doesn't respect active connections.
288+ // Connections will end after ~5 seconds (arbitrary), often not letting the full download
289+ // of large pieces of content, such as a vendor javascript file. This results in browsers
290+ // throwing a "net::ERR_CONTENT_LENGTH_MISMATCH" error.
291+ // https://github.com/angular/angular-cli/issues/7197
292+ // https://github.com/nodejs/node/issues/13391
293+ // https://github.com/nodejs/node/commit/2cb6f2b281eb96a7abe16d58af6ebc9ce23d2e96
294+ if ( / ^ v 8 .[ 0 - 4 ] .\d + $ / . test ( process . version ) ) {
295+ httpServer . keepAliveTimeout = 30000 ; // 30 seconds
296+ }
284297 } )
285298 . catch ( ( err : Error ) => {
286299 if ( err ) {
You can’t perform that action at this time.
0 commit comments