angular - .NET Core 5 角 SSR
问题描述
我正在创建一个新的 Angular 网站,并认为我会从新的 .NET 5 开始,但在添加 SSR 时遇到了一些问题。
我创建了一个新网站并添加了一个 Angular 客户端,ng new client-app
然后使用添加了 SSRng add @nguniversal/express-engine --client-project=client-app
我可以通过执行使用 power shell 运行 Angular 应用程序,npm run dev:ssr
并且一切正常,但是当我尝试通过更改UseAngularCliServer
from运行的脚本来更新我的 Startup.cs 以使用 SSR 时start
,dev:ssr
它会构建并启动,但在浏览器中会出现错误:
:50740/browser-sync/socket.io/?EIO=3&transport=polling&t=NPHWxVs:1 Failed to load resource: net::ERR_SSL_PROTOCOL_ERROR
zone-evergreen.js:2845 GET https://localhost:50740/browser-sync/socket.io/?EIO=3&transport=polling&t=NPHX5az net::ERR_SSL_PROTOCOL_ERROR
我认为这些是因为服务器没有http
使用https
如果我让启动指向start
一切正常,但我没有得到 SSR 引擎,并且我很困惑如何启动它,因为该UseSpaPrerendering
软件包已过时且不再包含在内。
如何启动 SSR 节点服务器并将其配置为使用 https?
应该如何设置,以便我的开发环境尽可能接近我的生产环境?
更新
我一直在阅读文档,我相信我了解发生了什么,首先原因ERR_SSL_PROTOCOL_ERROR
是由于socket.io
硬编码为使用 http 但看起来它重用了基本 url(包括 https when在网站中使用 SSL)所以这只是简单地复制,但 AngularCliServer 仅适用于 http。如果您查看源代码,则有评论
// Everything we proxy is hardcoded to target http://localhost because:
// - the requests are always from the local machine (we're not accepting remote
// requests that go directly to the Angular CLI middleware server)
// - given that, there's no reason to use https, and we couldn't even if we
// wanted to, because in general the Angular CLI server has no certificate
最重要的是,如果您希望使用预渲染进行调试,您将被迫关闭项目的 SSL。
其次,主要问题是由于NodeServices
被 .NET Core 团队折旧且不再维护。看起来有很多关于放弃支持的抱怨,微软表示它需要是一个公开维护的项目,他们对维护它没有兴趣。简而言之,不再有任何方法可以使用内置功能启动 Node 服务器。
Blazor 确实有一个执行 JavaScript 代码的库 JsInterop,也许这可能是使用<component />
标签助手或类似的东西的可能答案?
解决方案
推荐阅读
- java - 返回具有指定值但未定义实体/POJO 的实体的 ID 列表
- python - 已解决:在 windows 上安装 tensorflow 时出错 [SSL: DECRPYTION_FAILED_OR_BAD_RECORD_MAC] 解密失败或坏记录 mac (_ssl.c:2633)
- python - 使用 PyTest 进行 Python 单元测试,坚持更高级的测试
- python - 使用python创建交互式绘图
- python - 将 Django 从 2.2 迁移到 3.2
- ios - iOS 快速图像差异对比
- java - @Value application.properties 带有一个空 URL
- java - 在 while 循环中继续的切换案例
- reactjs - 根据反应中的ID下拉循环中的单个元素
- selenium-chromedriver - 我们不能使用不同的端口使用 2 个不同的 chrome 浏览器吗?