Angular CLI 6-ng build不会产生服务器包

时间:2018-05-17 22:36:20

标签: angular-cli asp.net-core-2.0 angular-universal angular6 angular-cli-v6

我正在关注

提供的官方角度通用指南

https://angular.io/guide/universal

但是当我运行ng build --prod时,它会生成客户端捆绑包,但不会生成服务器捆绑包。

由于我的环境是ASP.Net Core,我已跳过Universal Webpack configurationserver.ts

使用以前版本的Angular CLI,我们可以通过在构建ng build --app=ssr

时指定app来构建服务器捆绑包

我错过了什么吗?有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

修复:但有一点,更新过程没有带来字段deployUrl,这导致我的应用程序在运行node dist / server.js时无法找到捆绑包。所以我把它添加回angular.json并且它有效。不确定这是否与您的情况类似。

Edit2:因此,更新的build-angular:服务器已经过优化,只能生成服务器端呈现所需的代码。因此,无需生成scripts.15e6d454b35fa67e195e.jspolyfills.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可以引用条目