首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Nuxt 3中使用Firebase函数

在Nuxt 3中使用Firebase函数
EN

Stack Overflow用户
提问于 2022-05-06 18:43:54
回答 1查看 1.4K关注 0票数 5

环境

  • 操作系统: macOS 10.15.7
  • 节点版本:V16.14.2
  • Nuxt版本: 3.0.0-rc.2
  • 火力基地: 9.7.0
  • firebase-管理: 10.2.0
  • 火基-功能: 3.21.0
  • 消防基地.功能.试验: 0.3.3

在firebase.json中,设置了以下配置:

代码语言:javascript
运行
复制
{
"functions": { "source": ".output/server" }
}

我在"server“目录下有一个文件,其中包含以下功能:

代码语言:javascript
运行
复制
import * as functions from "firebase-functions";

export const helloWorld = functions.https.onRequest((request, response) => {
    functions.logger.info("Hello logs!", {structuredData: true});
    response.send("Hello from Firebase!");
});

当我跑步时:

代码语言:javascript
运行
复制
NITRO_PRESET=firebase npm run build
firebase emulators:start --only functions

然后转到我的firebase模拟器日志,它不会显示正在初始化的新helloWorld()函数。另外,当转到"http://localhost:5001/$PROJECTNAME/us-central1/helloWorld",它返回“函数us-central1 1-helloWorld不存在时,有效的函数是:us-集中式1-server”,这意味着我的函数还没有初始化。

有什么方法可以在我的Nuxt 3应用程序中从我的服务器目录中的文件中编写防火墙云函数吗?

我看到了类似的讨论这里,其中说在部署函数、存储、防火墙和部署服务器与宿主之间可以更改nuxt.config.ts functions对象。我试图只在"server“目录中编写firebase函数,而不创建”函数“目录和我的项目的根目录。这个是可能的吗?

我还开始了关于GitHub 这里的讨论

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-10 21:54:18

不幸的是,您所遵循的过程有一些要点需要强调。正如前面在本线程上提到的那样

Vue.js应用程序是一个前端组件(即使它是托管在云服务中的,比如Firebase托管)。云功能是无服务器的后端组件,托管在Firebase (Google )基础结构中,并对事件做出反应。 要使这两个组件相互交互,基本上有两种可能性:

  • 对于可调用的云函数和HTTPS云函数,您将从您的Vue.js应用程序中调用它们。
  • 对于后台触发的云函数(例如,由文档创建之类的修复事件触发),Vue.js前端可以生成事件(例如,写入修复)和/或侦听云函数执行的结果(例如,修改Firestore)。

正如文档中所解释的那样,要从Vue.js应用程序调用可调用函数,您需要执行以下操作(使用JS v9): 添加Firebase到您的Vue.js应用程序。例如,通过一个firebaseConfig.js文件: 从“firebase/app”导入{ initializeApp };从“firebase/firestore”导入{ getFirestore };从“firebase/functions”导入{ getFunctions };const firebaseConfig ={ apiKey:“.”,/.};const firebaseApp = initializeApp(firebaseConfig);const db = getFirestore(firebaseApp);const函数= getFunctions(firebaseApp);导出{ db,const }; 然后,在组件中执行<script> import { functions } from '../firebaseConfig'; import { httpsCallable } from 'firebase/functions'; // ... methods: { async callFunction() { const addMessage = httpsCallable(functions, 'addMessage'); const result = await addMessage({ text: messageText }) const data = result.data; //... }); } </script>

我还试图重现这个问题,并且我成功地用问题中的相同方法在模拟器上部署了函数,遵循GCP关于如何添加你的项目的防火墙的文档,并使用这个Youtube教程作为指南,它提供了一些关于如何向NuxtJS项目添加Firebase的重要技巧。

我将留下一个示例,说明当所有设置完成后,我的firebase.json文件是如何结束的:

代码语言:javascript
运行
复制
{
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint"
    ],
    "source": ".output/server" 
  },
  "hosting": {
    "site": "<your_project_id>",
      "public": ".output/public",
      "cleanUrls": true,
      "rewrites": [{ "source": "**", "function": "server" }],
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  }
}

此外,我建议使用火基CLI,因为它具有更多的可访问性特性,并检查这个介质导轨,以便更深入地了解如何向Nuxt添加Firebase。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72146078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档