【问题标题】:.Net Core 3.0 Angular SSR Project not running.Net Core 3.0 Angular SSR 项目未运行
【发布时间】:2019-11-22 17:52:33
【问题描述】:

我有一个 .net core 3.0 项目,它有一个使用 webpack 的 angular 8 前端。

出于 SEO 和其他索引原因,我需要在 angular 项目上启用服务器端渲染,但我无法让项目在启用服务器端渲染的情况下运行。

我遇到各种错误,见下文。但最终,如果有人能指出我正确的方向或让我知道 SSR 是否可以在 .net core 3.0 中实现,那将是一件好事,如果不能,那么我可以使用 2.2,如果这意味着 SSR 可以工作。

我实际上已经能够让一个 .net core 2.2 angular SSR 项目工作,但是一旦我通过邮递员在索引页面以外的任何地方进行 HTTO 获取,它就会返回 404“无法获取”。 Here 是我能够完成的 .Net Core 2.2 项目。

Here 是我遵循的使用 .Net Core 2.2 的教程之一。

此外,似乎 app.UseSpaPrerendering 现在在 .Net Core 3.0 中已弃用,我找不到任何有关如何在没有它的情况下使 SSR 工作的文档。

这是我在尝试运行我按照上述教程构建的测试项目时遇到的主要错误:

NodeInvocationException: Prerendering failed because of error: Error: The module at main.js does not export a default function, and you have not specified which export to invoke.

关于 .net core + angular SSR 的文档似乎很少,因此我们将不胜感激。

【问题讨论】:

标签: c# .net angular asp.net-core server-side-rendering


【解决方案1】:

我按照this article's 的说明进行操作,它就像 netcore 3.1 的魅力一样。它还提到了您的NodeInvocationException。根据作者的说法,“当您的应用在 Angular CLI 服务器完成构建应用服务器端之前开始运行时”

尽管您会收到UseSpaPrerendering() 的弃用警告,但它仍然有效。

PS:我还必须为 ma​​in.server.tsma​​in.ts 设置构建操作。可能是作者忘记提了。

【讨论】:

  • 谢谢@wodzu,我认为有很多事情在起作用,导致我遇到了这个问题。当它在 docker 中工作时我遇到了更多麻烦,因为它似乎需要所有 src每次启动时要为 SSR 重新编译的文件和节点。
  • 您是否注意到启用 SSR 的初始页面加载速度非常慢?它先加载 html,然后再加载 css,这样你就可以得到一闪而过的无样式内容。
  • 是的,但是在我将 angular 更新到 >= 8.3.x 后它就正常了。一般来说,整个页面的加载速度大大提高。我猜 SSR 在以前的版本中还没有完全成熟。很抱歉回答迟了:)
  • 有趣。没问题!
猜你喜欢
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
相关资源
最近更新 更多