修复:然而,更新过程中未带有字段deployUrl
,导致我的应用无法在运行node dist/server.js时找到捆绑包。因此,我在angular.json中将其添加回去,然后它就可以工作了。不确定这是否类似于您的情况。
编辑2:因此,更新的build-angular:server已经优化为仅生成服务器端渲染所需的代码。因此,没有必要生成诸如scripts.15e6d454b35fa67e195e.js
或polyfills.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标签。