我们有一个基于。net Core 2.2和Angular 8构建的网站。我一直在把它迁移到Angular 12,现在网站一切正常,只有一个奇怪的问题。当我开始运行这个站点时,它永远不会工作,直到我在angular项目中保存一个文件,导致它重新编译。
如果我只是运行它,那么网站将加载50秒,然后显示The Angular CLI process did not start listening for requests within the timeout period of 50 seconds
。然而,在输出窗口中,我可以看到该站点在大约7秒后成功编译。
Startup.ConfigureServices()中
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/dist";
});
Startup.Configure()中
app.UseSpa(spa =>
{
spa.Options.DefaultPageStaticFileOptions = ConfigDefaults.DefaultStaticFileOptions;
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});
如果我进入任何typescript文件并保存它然后它会重新编译然后如果我刷新页面就可以正常工作了
有什么额外的要求,使这个工作正确与角12?
检查代码后,似乎UseAngularCliServer
最终等待文本"在http上打开浏览器…";显示在标准输出上,以确定有角度的站点已经准备好了。由于某种原因,虽然似乎这一行被输出到错误流,而不是标准输出流为我。我认为这与我在构建过程中输出一些sass警告有关。
我添加了一个新的脚本到我的package.json
重定向错误流到stdout:"start:asp": "powershell ng serve 2>&1",
和更新Startup.cs
使用这个脚本spa.UseAngularCliServer(npmScript: "start:asp");
,现在它似乎正确加载启动。
我认为这是中间件的问题,而不是角,因为当我手动运行ng serve
时,这一行会进入正确的流。
我发现在升级到。net 5之后,这个问题似乎停止了,所以我猜这是angular和。net结合的问题。上面的方法似乎有帮助,但并不能完全解决问题。