小编Thi*_*man的帖子

为什么Node.js 8上的Firebase后台功能会抱怨事件参数?

在最近更新之后,firebase-tools希望我将我的package.json引擎设置设置为节点6或8。将其设置为6时,它将功能部署在节点6上,否则部署在节点8上。

在firebase-functions 1.0中,后台功能签名从更改eventdata, context。很久以前,我已经迁移了所有后台功能。

我注意到,根据@ gloud / functions文档(与firebase-functions不同),您显式设置了Node部署目标,并且Node 6和8运行时在API中的区别是同一事件与数据/上下文签名。

因此,在@ gloud / functions中,以与Firebase-functions不同的方式推出了API更改。

Wat似乎很奇怪,如果我现在部署引擎设置为节点8的firebase函数,则会收到如下错误:

需要使用事件参数来调用云函数。

当我将引擎设置为节点6时,它表示它正在将我的代码部署在Node.js 6上,并且一切正常。

现在,这似乎与我期望的相反!

因此,我使用的是最新的后台函数API,但似乎无法在Node.js 8上正确运行它们。有什么线索吗?

firebase google-cloud-functions google-cloud-firestore

5
推荐指数
1
解决办法
536
查看次数

如何在 us-central1 以外的区域使用 httpsCallable for web

我部署了一个云函数,如下所示:

export const publishVersion = functions
  .region("europe-west2")
  .https.onCall(async (data, context) => {}
Run Code Online (Sandbox Code Playgroud)

然后在我的 Web 客户端中,我定义了一个函数来调用它:

import { functions } from "firebase";

const callPublishVersion = functions().httpsCallable("publishVersion");

export function publishVersion(
  guidelineId: string,
  guidelineReference: string
) {
  return callPublishVersion({
    id: guidelineId,
    reference: guidelineReference
  });
}
Run Code Online (Sandbox Code Playgroud)

请注意,我包装函数的唯一原因是在我的客户端中进行严格的输入,但这不是这个问题的重点。

问题是,如果我在本地服务器 (localhost) 上运行 Web 客户端并调用该函数,则有两件事似乎会出错。我收到 CORS 错误:

从源“ http://localhost:3000 ”获取“ https://us-central1-my-project.cloudfunctions.net/publishVersion ”的访问权限已被 CORS 政策阻止:对预检请求的响应未通过访问控制检查:预检请求不允许重定向。

而且,us-central1即使我的功能已部署到europe-west2. 当我部署 firebase-tools 时会告诉我 url 应该是什么:

? 函数[publishVersion(europe-west2)]:创建操作成功。函数 URL(发布版本):https ://europe-west2-baymard-gemini-dev.cloudfunctions.net/publishVersion

我在哪里/如何控制事物以防止出现此 CORS 错误,以及如何将 httpsCallable 定向到其他区域?

官方文件没有提到任何这一点。 …

firebase google-cloud-functions

5
推荐指数
2
解决办法
1637
查看次数

在OSX上创建文件包

对于一个应用程序,我想将一组文件存储在一起,并将它们作为单个文件出现在文件系统中,以便于管理.我目前将所有内容存储在一个文件夹中.

我想保持可访问的内容,以便您可以根据需要手动编辑内部内容.

一种方法是创建一个zip存档,并为其提供除.zip之外的自定义扩展.然后它显示为文件类型,如果需要,您可以解压缩并访问内容,但是为了正常使用,请将其隐藏起来.

我似乎找不到方便的方法来做到这一点.Boost和zlib可以进行压缩,但不能与归档一起使用.我找到了libzip,但我很难理解如何使用它,对我而言,它似乎只读取/写入zip存档而不进行实际压缩.

有没有更方便的方法来解决这个问题?

你可以调用系统函数来从c ++/Carbon在OSX上创建存档吗?

还有另一种方法可以使文件夹显示为单个文件吗?

macos zip file-extension bundle macos-carbon

4
推荐指数
1
解决办法
6911
查看次数

Nginx add_header和缓存控制

在nginx中使用add_header指令时,标头将添加到来自源服务器的响应中.

假设源服务器返回cache-control public,max-age = 60.但是在nginx反向代理位置,您可以设置如下:

add_header cache-control public,max-age = 10

这究竟是做什么的?我可以想到两种不同的场景:

1)Nginx尊重来自源服务器的缓存控制头,并将内容存储在其缓存中,有效期为60秒.然后使用覆盖的标头传递响应,导致客户端将资源存储在其缓存中,到期时间为10秒.

要么..

2)Nginx首先覆盖响应头,然后解释它们.它以10秒的有效期存储资源,并将响应传递给客户端,客户端也将其缓存,有效期为10秒.

caching reverse-proxy nginx cache-control

4
推荐指数
2
解决办法
2万
查看次数

如何在应用程序模型中使用 FieldValue.serverTimestamp

在我的 Typescript 应用程序代码中,我定义了一个模型,该模型使用 Firestore 在服务器上生成的时间戳。当文档从数据库返回时,该字段将是一个 ISO 字符串。我想在我的应用程序中使用相同的模型定义来写入和读取数据,但这会带来一个问题。

我通常会写这样的东西:

interface Document {
  title: string,
  createdAt: string
}

async function addDocument(document: Document): Promise<string> {
  const id = await firestore.collection('documents').add(someDocument)
  return id
}

async function getDocumentData(documentId: string): Promise<Document> {
  const doc = await firestore.collection('documents').doc(documentId).get()

  invariant(doc.exists, `No document available with id ${documentId}`)
  return doc.data() as Document
}

const someDocument: Document = {
  title: "How to",
  createdAt: firestore.FieldValue.serverTimestamp()
}

const newDocumentId = await addDocument(someDocument)
Run Code Online (Sandbox Code Playgroud)

现在,Typescript 编译器抱怨 的值someDocument不兼容,因为createdAt它被定义为字符串。

之前,我通过欺骗编译器相信它是一个带有createdAt: firestore.FieldValue.serverTimestamp() as …

firebase typescript google-cloud-firestore

4
推荐指数
1
解决办法
3158
查看次数

如何使用Yarn定位单个工作区?

我有这样的工作区

"private": true,
  "workspaces": {
    "packages": [
      "packages/*"
    ],
    "nohoist": [
      "**/firebase-admin",
      "**/firebase-admin/**",
      "**/firebase-functions",
      "**/firebase-functions/**"
    ]
  },
Run Code Online (Sandbox Code Playgroud)

在我的包目录中,我有一个文件夹common以及其他文件夹package.json

当我执行时,yarn workspaces run build它会触发所有工作区的构建脚本。但是,如果我尝试使用yarn workspace命令来定位一个特定的工作区,就像yarn workspace common build我不断收到错误:

错误未知工作空间“常见”。

这是我的输出yarn workspaces info

yarn workspaces v1.17.0
{
  "@gemini/cli": {
    "location": "packages/cli",
    "workspaceDependencies": [],
    "mismatchedWorkspaceDependencies": []
  },
  "@gemini/cloud-functions": {
    "location": "packages/cloud-functions",
    "workspaceDependencies": [
      "@gemini/common"
    ],
    "mismatchedWorkspaceDependencies": []
  },
  "@gemini/common": {
    "location": "packages/common",
    "workspaceDependencies": [],
    "mismatchedWorkspaceDependencies": []
  },
  "@gemini/tools": {
    "location": "packages/tools",
    "workspaceDependencies": …
Run Code Online (Sandbox Code Playgroud)

yarnpkg yarn-workspaces

4
推荐指数
1
解决办法
585
查看次数

编译器是否足够聪明以检测无操作功能?

如果我写这样的函数:

void doMaybeNothing()
{ 
#ifndef IM_LAZY
   doSomething();
#endif
}
Run Code Online (Sandbox Code Playgroud)

现代编译器是否足够智能,可以检测无操作功能并进行优化,从而避免浪费周期?或者是否总会有一个小的性能影响?

c++

3
推荐指数
2
解决办法
373
查看次数

抽象基类拼图

在我的班级设计中遇到了以下问题:

class MyData
{   
   int foo;
};

class AbstraktA
{
public:
    virtual void A() = 0;
};

class AbstraktB : public AbstraktA
{
public:
    virtual void B() = 0;
};

template<class T>
class ImplA : public AbstraktA
{
public:
    void A(){ cout << "ImplA A()";  }       
};

class ImplB : public ImplA<MyData>, public AbstraktB
{
public:
     void B(){ cout << "ImplB B()"; }   
};

void TestAbstrakt()
{
    AbstraktB *b = (AbstraktB *) new ImplB;
    b->A();
    b->B();
};
Run Code Online (Sandbox Code Playgroud)

上面代码的问题是编译器会抱怨AbstraktA :: A()没有定义. …

c++ virtual templates abstract-class multiple-inheritance

2
推荐指数
1
解决办法
293
查看次数

utf-8网址问题

我有一个tomcat(7)服务器正在运行,我通过它尝试通过http访问一些公共文件.文件系统上的一些文件中包含特殊字符.找到没有这些特殊字符的那些.其他的给出404.例如:

http:// localhost:9090 /已处理/已转码 /Csángó_TÖMEGKERESZTELŐVEL_EGYBEKÖTÖTT_búcsú_Istensegítsfalvá20111053491309424029417_extracted.mp3"

从我发现的网址中的utf-8应该不是问题.我在文件名上尝试了一个url转义函数,结果是:

HTTP://本地主机:9090 /处理/代码转换/ CS%C3%a1ng%C3%B3_T%C3%96MEGKERESZTEL%C5%90VEL_EGYBEK%C3%96T%C3%96TT_b%C3%BACS%C3%ba_Istenseg%C3%adtsfalv% C3%a120111053491309424029417_extracted%2emp3

......但这似乎也没有解决任何问题.接下来要尝试什么?我不知道问题是什么.它可能与Tomcat设置有关吗?

url tomcat utf-8

2
推荐指数
1
解决办法
2594
查看次数