当前位置: 首页 > 知识库问答 >
问题:

云函数区域规范错误

巩枫
2023-03-14

我正在寻找部署一个用TypeScript编写的云函数,使用一个火力恢复触发器。脚本工作没有任何问题。然而,我需要指定执行区域,为了尊重我的RGPD,我需要在欧洲西部1执行的函数。我已经看了关于这个主题的留档,它被指定在函数中添加“。区域”,但是这会产生一个错误,你会发现附加的。获得的错误是"错误TS2339:属性'区域'在类型'DocumentBuilder上不存在。我想指出,我在本地VSC中没有任何错误,只是我连接到了Firebase。

我ndex.ts

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();

const db = admin.firestore();
const fcm = admin.messaging();

export const sendToDevice = functions.firestore
  .document('orders/{orderId}')
  .region('europe-west1')
  .onCreate(async snapshot => {


    const order = snapshot.data();

    const querySnapshot = await db
      .collection('users')
      .doc(order.seller)
      .collection('tokens')
      .get();

    const tokens = querySnapshot.docs.map(snap => snap.id);

    const payload: admin.messaging.MessagingPayload = {
      notification: {
        title: 'New Order!',
        body: `you sold a ${order.product} for ${order.total}`,
        icon: 'your-icon-url',
        click_action: 'FLUTTER_NOTIFICATION_CLICK'
      }
    };

    return fcm.sendToDevice(tokens, payload);
  });

包裹json:

{
  "name": "functions",
  "scripts": {
    "lint": "tslint --project tsconfig.json",
    "build": "tsc",
    "serve": "npm run build && firebase serve --only functions",
    "shell": "npm run build && firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "8"
  },
  "main": "lib/index.js",
  "dependencies": {
    "firebase-admin": "^8.0.0",
    "firebase-functions": "^3.1.0"
  },
  "devDependencies": {
    "tslint": "^5.12.0",
    "typescript": "^3.2.2"
  },
  "private": true
}

谢谢你以后的回答。在此处输入图像描述

共有1个答案

戚泰
2023-03-14

根据文档,区域规范紧跟在函数生成器声明之后,如下所示:

export const sendToDevice = functions
  .region('europe-west1')
  .firestore
  .document('orders/{orderId}')
  .onCreate(async snapshot => {

请注意,区域规范紧跟在函数之后。在生成器中,您拥有的是更晚的内容,这是无效的。

务必使用API文档来确定在构建函数的每个阶段哪些方法是有效的。

 类似资料:
  • 12. 直播域名URL规范 12.1. 推流地址: rtmp://domain/appname/streamname 12.2. 播流地址 rtmp : rtmp://domain2/appname/streamname flv: http://domain2/appname/streamname.flv hls: http://doma

  • 默认情况下,Firebase云功能部署到美国中部地区,但我想将其部署到欧洲西部地区。 我假设通过gcloud cli设置默认区域意味着,如果我删除并重新部署了我的云功能,它们将自动部署到我指定的默认区域。然而事实并非如此。相反,我需要在代码中为每个函数显式设置区域,如下所示: 我的问题是,如果通过gcloud cli指定默认区域并不能确定您的功能部署到哪个区域,那么它实际用于什么? gcloud

  • A society made up of individuals who were all capable of original thought would probably be unendurable. — H. L. Mencken “随大溜” 有时会是个好主意。如果其他人需要阅读或管理你的配置清单, 或者如果你想要分享代码到社区, 那么尽可能遵循现有的样式约定会是个好主意。 操作步骤 将

  • 问题内容: 我正在尝试运行此查询: 它只是返回两个日期相等的对象,而忽略时间部分。 但我收到: {“功能[数据库] .TruncateTime不存在”} 堆栈跟踪: 我在用着: C#Visual Studio 2010 EntityFramework 4数据库优先 网络框架4 MYSQL服务器5.6 MySQL.Data和MySQL.Data.Entity的版本是6.6.5.0 MySQL支持Tr

  • 我已经使用firebase云函数一段时间了,今天在代码中修复了一个小错误,在尝试部署时出现了以下错误。我取消了该更改,并尝试使用上次提交的稳定更改再次部署,但仍然是相同的错误。有什么解决办法吗?PS:这是一个typescript项目,我用tsc编译它。

  • 我在两个不同的地方创建了两个项目。比如美国中部和亚洲东北部。现在,对于这两个不同的项目,我想在各自的区域部署云功能。 我如何在环境变量或process.env中获取项目区域值,以便我可以使用它在云函数中设置该区域。