使用 firebase-functions 部署基于反应的 s-s-r 应用程序时出错

Posted

技术标签:

【中文标题】使用 firebase-functions 部署基于反应的 s-s-r 应用程序时出错【英文标题】:Error while deploying react based s-s-r app, using firebase-functions 【发布时间】:2019-06-17 18:50:34 【问题描述】:

在对应用程序进行一些修改后,我正在尝试将我的 s-s-r 应用程序部署到最初从 https://github.com/subhendukundu/template-react-s-s-r/tree/feature/react-router 分叉的 Firebase 中。 当我做sudo firebase serve --only functions,hosting 时效果很好,但当我做firebase deploy 时抛出错误。 可重现的 repo 是 https://github.com/subhendukundu/template-react-s-s-r/tree/feature/react-router,它有一个 package.json https://github.com/subhendukundu/template-react-s-s-r/tree/feature/react-router/public 我也使用公共目录作为我的函数目录,https://github.com/subhendukundu/template-react-s-s-r/blob/feature/react-router/firebase.json。 但是,即使我为我的云函数使用不同的函数目录,我也会看到相同的错误。 无论如何我可以解决它吗?

【问题讨论】:

next.js 会解决这个问题吗? 您能添加您收到的错误消息吗? Function failed on loading user code. Error message: Code in file index.js can't be loaded. Is there a syntax error in your code? Detailed stack trace: TypeError: c(...) is not a function at Object.<anonymous> (/user_code/assets/app.server.js:1:28950) at Object.module.exports.n (/user_code/assets/app.server.js:1:29283) . . . . Functions deploy had errors. To continue deploying other features (such as database), run: firebase deploy --except functions Error: Functions did not deploy properly. 对错误有什么建议吗? @SubhenduKundu 今天你问了一个question,我成功地解决了这个问题,但是你删除了那个帖子,所以我要求你重新发布同样的问题...... 请告诉如果你已经解决了我的问题 【参考方案1】:

这是可能的,但您不能使用云功能提供静态资产。您需要结合使用 firebase 功能和 firebase 托管。

Firebase 的人已经考虑过这一点,并且您也有一个可用的实现。

检查以下文档:

Overview Dynamic Content Code Example Youtube Video

注意:使用云功能时需要考虑延迟。

当一个新实例处理它的第一个请求时,响应时间会受到影响,这称为冷启动

More info

【讨论】:

【参考方案2】:

问题在于 firebase 托管仅支持 SPA,这意味着 s-s-r 不适用,您需要在可以运行 nextJS 的不同环境中运行 s-s-r 服务器,或者如果您使用的是静态页面生成器您可以直接上传文件而影响刷新内容的能力,不过,我确信具有云功能和 gatsby 的解决方案是可行的。

Tl;DR:您不会从 Firebase 托管中获得 s-s-r

【讨论】:

我正在使用 firebase 函数 github.com/subhendukundu/template-react-s-s-r/blob/feature/…。我假设 s-s-r 可以使用 howtofirebase.com/firebase-s-s-r-starter-7dde175a0dbc 等函数 你在你的 firebase 函数上使用 uglify 或 minification 吗?正如我上面提到的,可以使用 firebase 函数进行 s-s-r,现在有了更多的上下文,我可以看到您正在使用样板文件。确保您为 firebase 函数使用的节点版本 (6) 使用了正确的功能,此外,除非您想解决问题,否则无需缩小或转译后端代码。 我尝试了缩小和未缩小的代码,同样的问题。现在关于节点版本,如果代码缩小我猜没关系,是吗?

以上是关于使用 firebase-functions 部署基于反应的 s-s-r 应用程序时出错的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 部署错误

如何在 firebase-functions 中使用 firebase.auth()?

Cloud Functions Firebase CLI 预部署错误(打字稿)

无法部署“pubsub”云功能

LinuxLinux 常用基操和 Java 环境的部署

LinuxLinux 常用基操和 Java 环境的部署