Рендеринг на стороне сервера .NET Core Angular 7 - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь создать Angular 7 SSR, используя ядро ​​dotnet для его размещения, в шаблоне по умолчанию используется angular 5, и у MS есть документация для запуска SSR на этом (что работает нормально). Я попытался выполнить обновление через командную строку, чтобы Angular 7 и начать новый угловой проект и реализовать SSR после, но я всегда сталкиваюсь с одной и той же проблемой, как ng build, так и ng build: SSR работает нормально из командной строки, но когда я запускаю его из VS, время ожидания истекает (что Я думаю не имеет ничего общего с проблемой) после того, как выдает ошибку:

The thread 0x6608 has exited with code 0 (0x0).
The thread 0x1134 has exited with code 0 (0x0).
The thread 0x54bc has exited with code 0 (0x0).

Изменения, внесенные мной в SSR NG5 (https://go.microsoft.com/fwlink/?linkid=864501)) после этого (https://github.com/aspnet/Templating/issues/593):

startup.cs

options.BootModulePath = $"{spa.Options.SourcePath}/dist-server/main.bundle.js";

до

options.BootModulePath = $"{spa.Options.SourcePath}/dist-server/main.js";

Снова добавили проект SSR в angular.json

 "ssr": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:server",
          "options": {
            "outputPath": "dist-server",
            "main": "src/main.server.ts",
            "tsConfig": "src/tsconfig.server.json"
          },
          "configurations": {
            "production": {
              "optimization": false,
              "outputHashing": "media",
              "sourceMap": false,
              "namedChunks": false,
              "extractLicenses": true,
              "vendorChunk": false,
              "bundleDependencies": "all",
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ]
            }
          }
        }
      }
    }

Изменить сборку: ssr в скриптах package.json

"build:ssr": "ng build --configuration=production --project=ssr",

Код, который я запускаю - https://github.com/TPJ11/DotnetNG7SSR

Кто-нибудь понимает, что я делаю неправильно? чувствую, что я бился головой об стену от этого :(

1 Ответ

0 голосов
/ 01 декабря 2018

Правильно, поэтому не уверен, что это ломает приложение, но у меня есть обходной путь.

1) Создайте новое приложение .Net Core NG и удалите папку ClientApp, затем создайте пустое угловое приложение 7 черезCMD называется ClientApp ng new ClientApp

2) Следуйте angulars SSR руководство по настройке до шага 3.

3) Установите aspnet-prerendering npm i aspnet-prerendering

4) Поменяйте местами код с шага 2c (main.server.ts), чтобы использовать код из Руководство по установке Microsoft для main.server.ts

5) Откройте файл angular.json иизмените outputPath для сборки на dist и outputPath сервера на dist-server

6) Открыть package.json и в scripts добавить "build:ssr": "ng run ClientApp:server"

7) Открытьtsconfig.server.json и tsconfig.app.json и измените types на включающий узел "types": ["node"]

8) Откройте файл Startup.cs и, как показано в Руководство по установке Microsoft , добавьте

spa.UseSpaPrerendering(options =>
{
    options.BootModulePath = $"{spa.Options.SourcePath}/dist-server/main.js";
        options.BootModuleBuilder = env.IsDevelopment()
            ? new AngularCliBuilder(npmScript: "build:ssr")
                : null;
    options.ExcludeUrls = new[] { "/sockjs-node" };
});
...