我正在关注
提供的官方角度通用指南https://angular.io/guide/universal
但是当我运行ng build --prod
时,它会生成客户端捆绑包,但不会生成服务器捆绑包。
由于我的环境是ASP.Net Core,我已跳过Universal Webpack configuration
和server.ts
。
使用以前版本的Angular CLI,我们可以通过在构建ng build --app=ssr
我错过了什么吗?有人可以帮忙吗?
答案 0 :(得分:1)
deployUrl
,这导致我的应用程序在运行node 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"
复制配置并替换与服务器端相关的字段。
e.g:
"outputPath": "dist/server",
"main": "src/main.server.ts",
"tsConfig": "src/tsconfig.server.json",
注意:您应该通过CLI参数禁用输出散列,或者将angular.json
中服务器的配置更改为您的server.ts可以引用条目