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

3
我正在按照官方的Angular Universal指南(可在https://angular.io/guide/universal找到)进行操作,但是当我运行ng build --prod时,它会生成客户端包,但不会生成服务器包。
由于我的环境是ASP.Net Core,因此我跳过了“通用Webpack配置”和“server.ts”。
在以前版本的Angular CLI中,我们可以通过在构建ng build --app=ssr时指定应用程序来构建服务器包。
我是否遗漏了什么?请问有人能帮忙吗?

展示你的 angular.json 和 package.json 文件可能。 - David
1个回答

1

修复:然而,更新过程中未带有字段deployUrl,导致我的应用无法在运行node dist/server.js时找到捆绑包。因此,我在angular.json中将其添加回去,然后它就可以工作了。不确定这是否类似于您的情况。

编辑2:因此,更新的build-angular:server已经优化为仅生成服务器端渲染所需的代码。因此,没有必要生成诸如scripts.15e6d454b35fa67e195e.jspolyfills.7f343fe54490ee5246c8.js之类的捆绑包,它们被嵌入到main.js中。


编辑:我刚意识到由于编译过程的多次更改,使用build-angular:browser将不会生成与服务器兼容的包。(存在多个window的引用)
在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参数或更改服务器中的配置来禁用输出哈希,以便您的server.ts可以引用该条目。请保留html标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接