环境
在firebase.json中,设置了以下配置:
{
"functions": { "source": ".output/server" }
}
我在"server“目录下有一个文件,其中包含以下功能:
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!");
});
当我跑步时:
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 这里的讨论
发布于 2022-05-10 21:54:18
不幸的是,您所遵循的过程有一些要点需要强调。正如前面在本线程上提到的那样
Vue.js应用程序是一个前端组件(即使它是托管在云服务中的,比如Firebase托管)。云功能是无服务器的后端组件,托管在Firebase (Google )基础结构中,并对事件做出反应。 要使这两个组件相互交互,基本上有两种可能性:
…
正如文档中所解释的那样,要从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
文件是如何结束的:
{
"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。
https://stackoverflow.com/questions/72146078
复制相似问题