将 ASP.Net Core Angular 模板从版本 8 更新到 9

J. *_*Doe 8 c# asp.net-core angular

我读的这本书从一开始就有第 9 版(ASP.NET Core 3 和 Angular 9 - 第三版),并且还使用了 angular 模板。我安装了 vs 2019 的最新 Visual Studio 更新。

Angular 项目的模板版本是 8。我读的书是版本 9。所以我尝试更新我的 Angular 版本。 ng update给我

@angular/cli 8.3.14 -> 9.0.3 ng update @angular/cli

@angular/core 8.2.12 -> 9.0.3 ng update @angular/core

@nguniversal/aspnetcore-engine 8.1.1 -> 8.2.6 ng update @nguniversal/aspnetcore-engine
Run Code Online (Sandbox Code Playgroud)

我更新了 cli 和 core。但是当我尝试更新第三个包时,我得到:

C:\Users\user\Test\ClientApp>ng update @nguniversal/aspnetcore-engine
Using package manager: 'npm'
Collecting installed dependencies...
Found 39 dependencies.
Package '@nguniversal/aspnetcore-engine' is not a dependency.
Run Code Online (Sandbox Code Playgroud)

我无论如何都试图运行该应用程序,但我得到了 HTML

Cannot GET /
Run Code Online (Sandbox Code Playgroud)

或者一个例外页面:

System.TimeoutException: The Angular CLI process did not start listening for requests within the timeout period of 0 seconds. Check the log output for error information.
   at Microsoft.AspNetCore.SpaServices.Extensions.Util.TaskTimeoutExtensions.WithTimeout[T](Task`1 task, TimeSpan timeoutDelay, String message)
   at Microsoft.AspNetCore.SpaServices.Extensions.Proxy.SpaProxy.PerformProxyRequest(HttpContext context, HttpClient httpClient, Task`1 baseUriTask, CancellationToken applicationStoppingToken, Boolean proxy404s)
   at Microsoft.AspNetCore.Builder.SpaProxyingExtensions.<>c__DisplayClass2_0.<<UseProxyToSpaDevelopmentServer>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
Run Code Online (Sandbox Code Playgroud)

小智 0

也许有点晚了,但也许这对其他人有帮助。我遇到了完全相同的问题。要使其正常工作,请在 package.json 中执行此操作。

改变

"scripts":{
   ...
   "start": "ng serve"
   ...
}
 
Run Code Online (Sandbox Code Playgroud)
"scripts":{
   ...
   "start": "echo Starting... && ng serve"
   ...
}
 
Run Code Online (Sandbox Code Playgroud)

这是摘自Smatusan的评论。这就是它为什么起作用的解释。

“由于 ngserve 的初始构建时间超过了 .NET SPA 服务的编程超时窗口,因此经常会出现此问题,因此通过给予回显,.NET SPA 服务会收到一些数据并相信它已连接。” -迈克琼特

GitHub 上的完整问题可以在Angular端和.NET端找到