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

2024-02-18

我正在关注官方 Angular 通用指南,网址为

https://angular.io/guide/universal https://angular.io/guide/universal

但当我跑步时ng build --prod它确实生成客户端捆绑包,但不生成服务器捆绑包。

由于我的环境是ASP.Net Core,所以我跳过了Universal Webpack configuration and server.ts.

使用以前版本的 Angular CLI,我们能够通过在构建时指定应用程序来构建服务器包ng build --app=ssr

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


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

Edit2:因此,更新后的 build-angular:server 经过优化,仅生成服务器端渲染所需的代码。因此不需要生成诸如scripts.15e6d454b35fa67e195e.js or polyfills.7f343fe54490ee5246c8.js,它们嵌入在main.js.


编辑:我刚刚意识到,由于编译过程的许多变化,使用 build-angular:browser 将不会生成服务器端兼容的包。 (存在多个窗口引用)


在 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 可以引用该条目

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular CLI 6 - ng build 不生成服务器包 的相关文章

随机推荐