从 Angular 9 开始,您将拥有以下构建结构
dist
├── server
| └── main.js and some other files like firebase analytics stuff
└── browser
└── index.html and all files for the broswer
现在为了测试这个功能,你需要从项目根目录给出以下命令
node dist/server
这将调用服务器文件夹中的main.js文件并在本地提供应用程序。关于localhost网址和端口的信息将打印在屏幕上。
现在,为了部署到Firebase,请使用以下代码。
import * as functions from 'firebase-functions';
import * as path from 'path';
const app = require(path.resolve(__dirname, "./dist/server/main")).app;
const myApp = functions.https.onRequest(app());
你将会拥有一个名为myApp的函数,通过它你可以访问你的Angular SSR应用程序。
[更新]
并没有固定的位置来初始化你的函数。唯一重要的是在myApp函数中路径dist/server/main
是正确的。
还有一件事我忘了提到,那就是你需要将package.json中的hosting字段更新为以下配置 =>
...
"hosting": [{
"target": "app",
"public": "/dist/browser",
"rewrites": [{
"source": "**",
"function": "myApp"
}]
}]
...
希望能对你有所帮助;)
ng build --prod --project={您的项目名称,也要删除大括号} && ng run {再次输入您的项目名称}:server:production && node dist/server/main.js
。我之所以要求您这样做,是因为我在同一目录下有多个项目,当我添加新项目时,我的package.json文件会混乱,并且只能构建最新的应用程序而不是旧的应用程序,因此如果您也有多个项目,请使用该命令。此外,请告诉我您的构建目录结构是否与我所示相同。 - Harkalmain.server.ts
文件。我之前也问过这个文件,但你没有给我看。 - Harkalng deploy
- 全新功能 - https://github.com/angular/angularfire/blob/master/docs/deploy/getting-started.md - Jonathan