Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

399
Views
TimeoutException: el proceso de Angular CLI no comenzó a escuchar solicitudes dentro del período de tiempo de espera de 0 segundos

Recibo este error después de actualizar a angular 9. Estoy usando Visual Studio 2019, ASP .NET core con angular. Incluso si creo un nuevo proyecto y actualizo angular a la versión 9, deja de funcionar.

La lista completa de respuesta de la página es:

TimeoutException: el proceso de Angular CLI no comenzó a escuchar solicitudes dentro del período de tiempo de espera de 0 segundos. Compruebe la salida del registro para obtener información sobre el error. Microsoft.AspNetCore.SpaServices.Extensions.Util.TaskTimeoutExtensions.WithTimeout(Tarea de tarea, TimeSpan timeoutDelay, mensaje de cadena) Microsoft.AspNetCore.SpaServices.Extensions.Proxy.SpaProxy.PerformProxyRequest(HttpContext context, HttpClient httpClient, Task baseUriTask, CancellationToken applicationStoppingToken, bool proxy404s) Microsoft.AspNetCore.Builder.SpaProxyingExtensions+<>c__DisplayClass2_0+<b__0>d.MoveNext() Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(contexto HttpContext)

Mi paquete.json es:

 { "name": "webapplication10", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "build:ssr": "ng run WebApplication10:server:dev", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" }, "private": true, "dependencies": { "@angular/animations": "9.0.0", "@angular/cdk": "~9.0.0", "@angular/common": "9.0.0", "@angular/compiler": "9.0.0", "@angular/core": "9.0.0", "@angular/forms": "9.0.0", "@angular/material": "~9.0.0", "@angular/platform-browser": "9.0.0", "@angular/platform-browser-dynamic": "9.0.0", "@angular/platform-server": "9.0.0", "@angular/router": "9.0.0", "@nguniversal/module-map-ngfactory-loader": "8.1.1", "aspnet-prerendering": "^3.0.1", "bootstrap": "^4.4.1", "core-js": "^3.6.4", "jquery": "3.4.1", "oidc-client": "^1.10.1", "popper.js": "^1.16.1", "rxjs": "^6.5.4", "tslib": "^1.10.0", "zone.js": "~0.10.2" }, "devDependencies": { "@angular-devkit/build-angular": "^0.900.1", "@angular/cli": "9.0.1", "@angular/compiler-cli": "9.0.0", "@angular/language-service": "9.0.0", "@types/jasmine": "^3.5.3", "@types/jasminewd2": "~2.0.8", "@types/node": "^12.12.27", "codelyzer": "^5.2.1", "jasmine-core": "~3.5.0", "jasmine-spec-reporter": "~4.2.1", "karma": "^4.4.1", "karma-chrome-launcher": "~3.1.0", "karma-coverage-istanbul-reporter": "^2.1.1", "karma-jasmine": "~3.1.1", "karma-jasmine-html-reporter": "^1.5.2", "typescript": "3.7.5" }, "optionalDependencies": { "node-sass": "^4.12.0", "protractor": "~5.4.2", "ts-node": "~8.4.1", "tslint": "~5.20.0" } } ```
over 4 years ago · Santiago Trujillo
19 answers
Answer question

0

Me encontré con un problema similar e hice las siguientes actualizaciones en el archivo package.json

 "scripts": { "ng": "ng", "start": "echo hello && ng serve", "build": "ng build", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" }

Consulte la resolución de github en [dotnet/angular - issues/17277]

over 4 years ago · Santiago Trujillo Report

0

"scripts": { "ng": "ng", "start": **"ng serve --port 33719 --open",** "build": "ng build",

Use la configuración presente en negrita en package.json

over 4 years ago · Santiago Trujillo Report

0

Cambiar a .NET5 resuelve mi problema. También puedes probar esto:

 "scripts": { "start": "echo start && ng serve",

o

 "start": "ng serve --port 0000",

en paquete.json

over 4 years ago · Santiago Trujillo Report

0

Hice todas estas sugerencias exitosas. Pero el problema del tiempo de espera seguía ahí. En mi caso me funcionó lo siguiente , (Adjunto todos los pasos)

  1. Comente la siguiente línea en main.ts para solucionar el problema del strict mode

    export { renderModule, renderModuleFactory } from '@angular/platform-server';

  2. Cambie ng serve a echo Starting && ng serve en el archivo package.json

  3. Simplemente ejecutó el comando ng serve manualmente usando el símbolo del sistema de Node.js. Luego intente ejecutar el proyecto en Visual Studio.

over 4 years ago · Santiago Trujillo Report

0

ejecute npm install -g @angular/cli desde el símbolo del sistema

over 4 years ago · Santiago Trujillo Report

0

Para fines de desarrollo, si recibe el error "TimeoutException: el proceso de la CLI de Angular no comenzó a escuchar solicitudes dentro del período de tiempo de espera de 0 segundos". .

Por favor, siga estos 2 pasos que funcionan para mí también:

En el símbolo del sistema, ejecute el comando 'ng serve' para ejecutar la solución angular. En el archivo startup.cs, cambie el tiempo de espera de inicio a minutos. incluso no tomará tanto tiempo ya que la solución angular ya se está ejecutando. -> spa.Options.StartupTimeout = nuevo TimeSpan(0, 5, 0);

Por favor marca la respuesta si te ayuda!!

Gracias.

over 4 years ago · Santiago Trujillo Report

0

Cambié la configuración de la canalización del spa en el método de configuración de la clase de inicio, funciona para mí.

 app.UseSpa(spa => { // To learn more about options for serving an Angular SPA from ASP.NET Core, // see https://go.microsoft.com/fwlink/?linkid=864501 spa.Options.StartupTimeout = new System.TimeSpan(0, 15, 0); spa.Options.SourcePath = "ClientApp"; if (env.IsDevelopment()) { spa.UseAngularCliServer(npmScript: "start"); } });
over 4 years ago · Santiago Trujillo Report

0

El mejor enfoque es insertar esta línea en Inicio

 spa.UseProxyToSpaDevelopmentServer("http://localhost:4200");

Y luego ejecute o depure su aplicación desde Visual Studio.

over 4 years ago · Santiago Trujillo Report

0

Si solo está haciendo trabajo de back-end, en su startup.cs comente

 spa.UseAngularCliServer(npmScript: "start");

y añadir

 spa.UseProxyToSpaDevelopmentServer("http://localhost:4200");

Al igual que...

 //spa.UseAngularCliServer(npmScript: "start"); spa.UseProxyToSpaDevelopmentServer("http://localhost:4200");//Todo Switch back for SPA Dev

Ejecute el SPA desde cmd (en el directorio ClientApp) a través de npm start.

Luego, cuando ejecute o depure su aplicación completa desde Visual Studio, funcionará mucho más rápido.

over 4 years ago · Santiago Trujillo Report

0

Ninguna de las soluciones aquí funcionó para mí. El problema comenzó después de actualizar los componentes de mi solución a sus últimas versiones. Lo único que funciona para mí es actualizar mi cli angular global para tener la misma versión que mi local:

 npm uninstall -g angular-cli npm cache clean npm cache verify npm install -g @angular/cli@latest
over 4 years ago · Santiago Trujillo Report

0

En mi caso, hubo errores de compilación de TypeScript que SpaServices o ts-node no detectaron. Había referencias que usaban el mismo nombre de archivo con diferentes espacios de nombres que confundían al compilador en tiempo de ejecución. Ejecute ng build en la carpeta ClientApp y asegúrese de que no haya errores.

over 4 years ago · Santiago Trujillo Report

0

Lo resolví cambiando:

 "scripts": { "start": "ng serve",

para:

 "scripts": { "start": "echo Starting... && ng serve",

en package.json

over 4 years ago · Santiago Trujillo Report

0

Aquí hay una solución:

  • En package.json, cambie el script de inicio de "ng serve" a "ngserve"
 "scripts": { "start": "ngserve",
  • En el mismo directorio, cree un archivo ngserve.cmd con el siguiente contenido:
 @echo ** Angular Live Development Server is listening on localhost:%~2, open your browser on http://localhost:%~2/ ** ng serve %1 %~2

Ahora Dotnet obtiene la línea que está esperando. Después de eso, el comando ng serve iniciará el servidor (de hecho, Angular Live Development Server aún no está escuchando), el navegador se abrirá y primero no funcionará (ng serve aún se está compilando), pero si presiona recargar después un tiempo, debería estar bien.

Esto es solo una solución, pero funciona para nosotros.

over 4 years ago · Santiago Trujillo Report

0

Agregué verbosidad al proceso de publicación en el archivo package.json de esta manera.

 "scripts": { "ng": "ng", "start": "ng serve --verbose", "build": "ng build", ... }, ...

No tengo idea de por qué funcionó, pero siento que de alguna manera se relaciona con causar la misma desaceleración que el eco.

over 4 years ago · Santiago Trujillo Report

0

En package.json cambie ng serve a ng serve --host 0.0.0.0 ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Report

0

Como se sugiere en https://developercommunity.visualstudio.com/solutions/446713/view.html , debe establecer la configuración de StartupTimeout.

Básicamente en Startup.cs:

 app.UseSpa(spa => { spa.Options.SourcePath = "./"; //Configure the timeout to 5 minutes to avoid "The Angular CLI process did not start listening for requests within the timeout period of 50 seconds." issue spa.Options.StartupTimeout = new TimeSpan(0, 5, 0); if (env.IsDevelopment()) { spa.UseAngularCliServer(npmScript: "start"); } });
over 4 years ago · Santiago Trujillo Report

0

para resolver el error de modo estricto, elimine esta línea de main.ts

 export { renderModule, renderModuleFactory } from '@angular/platform-server';

Sin embargo, esto no resuelve el problema del tiempo de espera. También recibo este error después de actualizar a Angular 9 y usar .NET core.

Ejecutar la aplicación angular usando "ng serve" y luego cambiar su secuencia de comandos spa de inicio para usar UseProxyToSpaDevelopmentServer funciona como una solución alternativa

over 4 years ago · Santiago Trujillo Report

0

TL;DR

Lamentablemente, el problema parece estar relacionado con algunos cambios en la forma en que Angular CLI inicia la parte angular de la aplicación. Según este problema:

https://github.com/dotnet/aspnetcore/issues/17277

Las soluciones propuestas son establecer el progreso: verdadero en angular.json o realizar un eco simple antes de servir ng (https://github.com/dotnet/aspnetcore/issues/17277#issuecomment-562433864 ).

respuesta completa

Desenterré la base del código central de asp.net ( https://github.com/dotnet/aspnetcore ), observando cómo la plantilla Angular inicia la aplicación Angular.

El motor central que inicia el servidor angular está representado por dos clases: AngularCliMiddleware ( https://git.io/JvlaL ) y NodeScriptRunner ( https://git.io/Jvlaq ).

En AngularCliMiddleware encontramos este código (eliminé los comentarios originales y agregué algunos propios para explicar un par de cosas):

 public static void Attach(ISpaBuilder spaBuilder, string npmScriptName) { var sourcePath = spaBuilder.Options.SourcePath; if (string.IsNullOrEmpty(sourcePath)) { throw new ArgumentException("Cannot be null or empty", nameof(sourcePath)); } if (string.IsNullOrEmpty(npmScriptName)) { throw new ArgumentException("Cannot be null or empty", nameof(npmScriptName)); } // Start Angular CLI and attach to middleware pipeline var appBuilder = spaBuilder.ApplicationBuilder; var logger = LoggerFinder.GetOrCreateLogger(appBuilder, LogCategoryName); var angularCliServerInfoTask = StartAngularCliServerAsync(sourcePath, npmScriptName, logger); var targetUriTask = angularCliServerInfoTask.ContinueWith( task => new UriBuilder("http", "localhost", task.Result.Port).Uri); SpaProxyingExtensions.UseProxyToSpaDevelopmentServer(spaBuilder, () => { var timeout = spaBuilder.Options.StartupTimeout; return targetUriTask.WithTimeout(timeout, $"The Angular CLI process did not start listening for requests " + // === NOTE THIS LINE, THAT CARRIES THE "0 seconds" BUG!!! $"within the timeout period of {timeout.Seconds} seconds. " + $"Check the log output for error information."); }); } private static async Task<AngularCliServerInfo> StartAngularCliServerAsync( string sourcePath, string npmScriptName, ILogger logger) { var portNumber = TcpPortFinder.FindAvailablePort(); logger.LogInformation($"Starting @angular/cli on port {portNumber}..."); var npmScriptRunner = new NpmScriptRunner( sourcePath, npmScriptName, $"--port {portNumber}", null); npmScriptRunner.AttachToLogger(logger); Match openBrowserLine; using (var stdErrReader = new EventedStreamStringReader(npmScriptRunner.StdErr)) { try { // THIS LINE: awaits for the angular server to output // the 'open your browser...' string to stdout stream openBrowserLine = await npmScriptRunner.StdOut.WaitForMatch( new Regex("open your browser on (http\\S+)", RegexOptions.None, RegexMatchTimeout)); } catch (EndOfStreamException ex) { throw new InvalidOperationException( $"The NPM script '{npmScriptName}' exited without indicating that the " + $"Angular CLI was listening for requests. The error output was: " + $"{stdErrReader.ReadAsString()}", ex); } } var uri = new Uri(openBrowserLine.Groups[1].Value); var serverInfo = new AngularCliServerInfo { Port = uri.Port }; await WaitForAngularCliServerToAcceptRequests(uri); return serverInfo; }

Como puede ver, el método StartAngularCliServerAsync crea un nuevo objeto NpmScriptRunner , que es un contenedor alrededor de una llamada al método Process.Start, básicamente, adjunta el registrador y luego espera que el StdOut del proceso emita algo que coincida con "abrir su navegador en http ALGO...".

¡Lo divertido es que esto debería funcionar !

Si ejecuta ng serve (o npm run start) en la carpeta ClientApp, una vez que el servidor se inicia, seguirá emitiendo el resultado "abrir su navegador en http...".

Si ejecuta la aplicación en dotnet, el servidor del nodo realmente se inicia, simplemente habilite todos los registros en el modo de depuración, busque la línea "Iniciando @angular/cli en el puerto..." e intente visitar localhost en ese puerto, verá que su aplicación angular se está ejecutando.

El problema es que, por alguna razón, StdOut ya no obtiene la línea "abrir su navegador en", ni el registrador lo escribe ... parece que de alguna manera esa línea de salida particular de ng serve se retiene, como si fuera ya no se envía en el flujo de salida de Stardard. El método WaitForMatch alcanza su tiempo de espera después de 5 segundos y se captura del código del método de extensión WithTimeout, que genera el mensaje (error) "... 0 segundos ...".

Por lo que pude ver, una vez que dotnet ejecuta su aplicación, se genera una serie de procesos en secuencia, pero no pude notar ninguna diferencia en las líneas de comando de Angular 8 a Angular 9.

Mi teoría es que se ha cambiado algo en Angular CLI que evita que esa línea se envíe en stdout, por lo que el proxy .net no lo detecta y no puede detectar cuándo se inicia el servidor angular.

Según este problema:

https://github.com/dotnet/aspnetcore/issues/17277

Las soluciones propuestas son establecer el progreso: verdadero en angular.json o realizar un eco simple antes de servir ng (https://github.com/dotnet/aspnetcore/issues/17277#issuecomment-562433864 ).

over 4 years ago · Santiago Trujillo Report

0

Aquí esta lo que hice

de Fairlie Agile, comentó esta línea en main.ts

 export { renderModule, renderModuleFactory } from '@angular/platform-server';

De Claudio Valerio En angular.json, establecer

 "progress": true,

Ahora puedo ejecutar la aplicación haciendo clic en F5/Ejecutar IIS Express

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!