Angular CLI 6 - сборка ng не производит серверные комплекты - PullRequest
0 голосов
/ 18 мая 2018

Я следую официальному руководству Angular Universal, доступному по адресу

https://angular.io/guide/universal

, но когда я запускаю ng build --prod, он действительно производит клиентские пакеты, но не производит серверные пакеты.

Поскольку моей средой является ASP.Net Core, я пропустил Universal Webpack configuration и server.ts.

В предыдущей версии Angular CLI мы смогли создать серверный комплект, указав приложение при сборке ng build --app=ssr

Я что-то упустил?Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 27 мая 2018

Исправлено: одна вещь, однако, процесс обновления не перенес поле deployUrl, из-за которого мое приложение не могло найти пакеты при запуске узла dist / server.js.Поэтому я добавил его обратно в angular.json, и это сработало.Не уверен, что это похоже на ваш случай.

Edit2: Итак, обновленный build-angular: сервер оптимизирован для генерации только необходимого кода для рендеринга на стороне сервера.Поэтому нет необходимости создавать пакеты, такие как scripts.15e6d454b35fa67e195e.js или polyfills.7f343fe54490ee5246c8.js, они встроены в main.js.


Редактировать: я только что понял, что из-за многих измененийпроцесс компиляции с использованием build-angular: браузер не будет генерировать совместимый с сервером пакет.(имеется множественная ссылка на окно)


В Angular 6 они выбрали другой компоновщик, который использует:

"builder": "@angular-devkit/build-angular:server",

Используя этот компоновщик, эти полякак-то не доступны.Я не уверен, является ли ошибкой то, что конфигурация сборки сервера не распространяется из нашего основного приложения, или есть причины, по которым мы не должны указывать эти поля для build-angular:server.

"polyfills": "src/polyfills.ts",
"assets": [
  // Your assets
],
"styles": [
  // Your global styles
],
"scripts": [
  // Your global scripts
]

Обходной путь, позволяющий Angular Universal работать, как и прежде, Angular 6, заключается в использовании браузера для сборки вашего серверного приложения.

Вы должны быть знакомы с процессом, просто скопируйте свои конфигурации из "architect/build" и замените полякоторые относятся к серверной части.

Например:

"outputPath": "dist/server",
"main": "src/main.server.ts",
"tsConfig": "src/tsconfig.server.json",

Примечание. Вы должны отключить хеширование вывода либо с помощью аргументов CLI, либо изменив настройки для сервера в angular.json на ваш сервер.ts может ссылаться на запись

...