在最近更新之后,firebase-tools希望我将我的package.json引擎设置设置为节点6或8。将其设置为6时,它将功能部署在节点6上,否则部署在节点8上。
在firebase-functions 1.0中,后台功能签名从更改event
为data, 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上正确运行它们。有什么线索吗?
我部署了一个云函数,如下所示:
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 定向到其他区域?
在官方文件没有提到任何这一点。 …
对于一个应用程序,我想将一组文件存储在一起,并将它们作为单个文件出现在文件系统中,以便于管理.我目前将所有内容存储在一个文件夹中.
我想保持可访问的内容,以便您可以根据需要手动编辑内部内容.
一种方法是创建一个zip存档,并为其提供除.zip之外的自定义扩展.然后它显示为文件类型,如果需要,您可以解压缩并访问内容,但是为了正常使用,请将其隐藏起来.
我似乎找不到方便的方法来做到这一点.Boost和zlib可以进行压缩,但不能与归档一起使用.我找到了libzip,但我很难理解如何使用它,对我而言,它似乎只读取/写入zip存档而不进行实际压缩.
有没有更方便的方法来解决这个问题?
你可以调用系统函数来从c ++/Carbon在OSX上创建存档吗?
还有另一种方法可以使文件夹显示为单个文件吗?
在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秒.
在我的 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 …
我有这样的工作区
"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) 如果我写这样的函数:
void doMaybeNothing()
{
#ifndef IM_LAZY
doSomething();
#endif
}
Run Code Online (Sandbox Code Playgroud)
现代编译器是否足够智能,可以检测无操作功能并进行优化,从而避免浪费周期?或者是否总会有一个小的性能影响?
在我的班级设计中遇到了以下问题:
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()没有定义. …
我有一个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转义函数,结果是:
......但这似乎也没有解决任何问题.接下来要尝试什么?我不知道问题是什么.它可能与Tomcat设置有关吗?