Исправлено: одна вещь, однако, процесс обновления не перенес поле 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 может ссылаться на запись