gpt4 book ai didi

angular - 路由超时。 Angular 9 通用 + Firebase

转载 作者:行者123 更新时间:2023-12-05 03:54:01 25 4
gpt4 key购买 nike

我正在尝试设置 Angular 9 Universal + Firebase 应用程序。我已将通用包添加到我的项目和 Firebase 云功能中以支持 SSR。这是我的云函数的代码:

import * as functions from 'firebase-functions';
import * as path from 'path';

const universal = require(path.resolve(__dirname, '../dist/server/main')).app;

export const ssr = functions.runWith({ memory: "2GB", timeoutSeconds: 120 }).https.onRequest(universal);

我的 Firebase 配置:

{
"hosting": {
"public": "dist/browser",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"function": "ssr"
}
]
}
}

构建通过且没有错误,应用程序似乎工作正常但路由不起作用。主路线 (/) 加载良好,我可以毫无错误地导航到其他路线,但如果我尝试在新选项卡中打开任何其他路线(例如 /books)或重新加载已经打开的路线我会得到超时异常。这是屏幕截图: error

我不知道为什么会出现这个错误。我已经尝试将超时时间增加到 120 秒,但没有帮助。任何建议我该如何解决?

最佳答案

如果您使用的是 angular universal 的脚手架版本并且您没有更改 server.ts 文件中的任何内容,则必须将调用通用函数的结果传递给 onRequest 函数。

所以,你必须改变这个:

const universal = require(path.resolve(__dirname, '../dist/server/main')).app;

export const ssr = functions.runWith({ memory: "2GB", timeoutSeconds: 120 }).https.onRequest(universal);

为此(你必须调用通用函数):

const universal = require(path.resolve(__dirname, '../dist/server/main')).app;

export const ssr = functions.runWith({ memory: "2GB", timeoutSeconds: 120 }).https.onRequest(universal());

为什么这是必要的?您的 app 函数不接收任何参数,并返回一个 server 对象(实际上是一个 Express-application 对象)。 onRequest 函数接收一个匿名函数,该函数接收一个 request 和一个 response。因此将 app 函数传递给 onRequest 没有多大意义。

我昨天遇到了这个完全相同的问题,我真的不知道 Firebase 如何能够提供根路由 (/),而不是任何子路由。

无论如何,我希望这个答案能解决您的问题!

卢西亚诺。

关于angular - 路由超时。 Angular 9 通用 + Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61352383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com