Angular 如何从角度项目部署新的firebase函数
我有一个SSR的角度项目。它作为功能托管在firebase中 我想在这里保留一些与项目相关的firebase函数Angular 如何从角度项目部署新的firebase函数,angular,firebase,Angular,Firebase,我有一个SSR的角度项目。它作为功能托管在firebase中 我想在这里保留一些与项目相关的firebase函数 我在项目中为此在myproject/backend/functions中创建了一个新文件夹 我将cli导航到myproject/backend/functions文件夹 我运行firebase init firestore 但是,firebase cli在项目的根文件夹中检测到firebase设置我的项目。它将继续修改该文件 我应该如何初始化angular项目中的文件夹,以便从项
- 我在项目中为此在
中创建了一个新文件夹myproject/backend/functions
- 我将cli导航到
文件夹myproject/backend/functions
- 我运行
firebase init firestore
我试图实现与文档类似的情况:Firebase函数支持使用web框架。官方文档提供了在函数中使用
Express
处理http请求的示例
const functions=require('firebase-functions');
const express=require('express');
常量app=express();
app.get('/api',(请求,res)=>{
const date=新日期();
常数小时=(date.getHours()%12)+1;//伦敦是UTC+1小时;
res.json({bongs:'BONG'。重复(小时)});
});
exports.app=functions.https.onRequest(app);
因此,添加函数的一种方法就是在应用程序导出后添加它们
exports.helloWatcher=functions.database.ref('/hello').onWrite(…)
或者如果是打字脚本
export let helloWatcher=functions.database.ref('/hello').onWrite(…)
OP希望在Angular SSR项目和其他功能之间有一些分离。
问题是他无法在另一个firebase函数中初始化firebase函数,因为它检测到父firebase配置
因此,建议的解决方案是在外部文件夹中执行
init
,这样firebase
将创建必要的文件。然后将文件夹移动到原始firebase文件夹中。由于firebase将尝试查找配置文件,它将在找到的第一级停止,因此不会检查配置是否已嵌套。您是如何设置在函数中使用SSR运行的?在代码中的某个地方,您应该有一个函数的导出,以便firebase函数可以调用它,为什么不在那里添加更多的导出呢?@Abkarino我使用ng add@nguniversal/express engine
创建了一个SSR项目。您可以从官方文档中假设设置:@Abkarino主要原因是我不想不必要地将角度代码与云函数代码混用。分离firebase函数可以让我更好地组织代码,更快地阅读和更新代码。其次,我不知道如何在express中部署监听firestore事件的函数,因为这与路由无关。最后,我并不总是想在我的项目中部署所有功能。@Abkarino在angular文件夹外创建文件夹,然后移动它对我来说很有效。到目前为止,我没有看到意外的副作用。留下一个正式的答案,我会在赏金期快结束时接受它,除非有更好的答案出现。我使用第二种方法将文件夹初始化到其他位置,然后将其移动。我无法在我的angular项目中找到导出。除了server.ts
文件中导出的app()
,该文件可能会作为firebase函数导出到其他地方。我无法跟踪将app()
移动到firebase函数的代码所在的位置。它可能在某个图书馆里。因此,这将放弃答案的第一部分作为选项。@RobMonhemius此url显示如何启动项目,您可能也这样做了。我没有分享这个url,因为你已经初始化了你的项目,但也许你想看看那个视频。