修复:但有一件事,更新过程没有带来字段deployUrl
,这导致我的应用程序在运行节点 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"
并替换与服务器端相关的字段即可。
例如:
"outputPath": "dist/server",
"main": "src/main.server.ts",
"tsConfig": "src/tsconfig.server.json",
注意:您应该通过 CLI 参数或将服务器的配置更改为angular.json
server.ts 可以引用条目来禁用输出散列