Javascript Firebase云功能-onCall不工作
我正在测试FB docs()上描述的一个非常简单的实现,但它不起作用 这是我的Firebase功能,部署到云:Javascript Firebase云功能-onCall不工作,javascript,firebase,cors,google-cloud-functions,Javascript,Firebase,Cors,Google Cloud Functions,我正在测试FB docs()上描述的一个非常简单的实现,但它不起作用 这是我的Firebase功能,部署到云: exports.getRecSkills = functions.https.onCall((data, context) => { return {text: data.text}; }); …和我的客户端呼叫(初始化FB后): 我得到一个CORS标题相关的问题,但在文件中,它没有提到需要CORS。。。我错过什么了吗 一些注意事项: 我已经能够执行其他Firebase
exports.getRecSkills = functions.https.onCall((data, context) => {
return {text: data.text};
});
…和我的客户端呼叫(初始化FB后):
我得到一个CORS标题相关的问题,但在文件中,它没有提到需要CORS。。。我错过什么了吗
一些注意事项:
- 我已经能够执行其他Firebase功能(即HTTPS、, 数据库)所以我不认为是我把Firebase设置错了
- 更新到最新的Firebase,所以也不要认为这是个问题
- 给我一个“内部”错误,API文档对此没有帮助,除了“有严重错误”
- 我似乎无法让这个函数工作(它一直在给我压力) 400个错误)通过shell进行本地测试时,即使我得到了它 使用任何其他数据库和https功能
已经为此挣扎了很长一段时间。。。请帮忙 我最近也遇到了同样的问题,但在配置对象中包含了我的“projectId”后就解决了。下面是Javascript的Firebase配置对象的代码片段。确保配置对象中的所有字段都已填充,它应该可以解决未定义的问题
var config = {
apiKey: "<API_KEY>",
authDomain: "<PROJECT_ID>.firebaseapp.com",
databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
projectId: "<PROJECT_ID>",
storageBucket: "<BUCKET>.appspot.com",
messagingSenderId: "<SENDER_ID>",
};
var配置={
apiKey:“,
authDomain:“.firebaseapp.com”,
数据库URL:“https://.firebaseio.com",
投射:“,
storageBucket:“.appspot.com”,
messagingSenderId:“”,
};
如果您有CORS
问题,并且您正在使用express
公开API函数,则必须允许CORS:
import * as cors from 'cors';
import * as express from 'express';
const corsHandler = cors({origin: true});
const app = express();
app.use(corsHandler);
app.post('/createUser', async (request, response) => {
await createUser(request, response);
});
exports.api = functions.https.onRequest(app);
要消除您的
CORS
错误,请确保您的firebase.json
具有以下标题
:
"hosting": [
{
"headers": [
{
"source": "**",
"headers": [
{
"key": "Access-Control-Allow-Origin",
"value": "*"
}
]
}
]
}
]
如果您在本地设备上运行的是Firebase Emulator,请确保在初始化Firebase函数后具有以下功能,否则您的本地设备仍将调用远程Firebase函数,您将再次遇到CORS
错误:
if (window.location.hostname === "localhost") {
console.log("localhost detected!");
firebase.functions().useFunctionsEmulator('http://localhost:5001');
};
您正在使用什么版本的客户端和节点SDK?我正在为FB client(v4.13.1)和FIrebase admin(v5.12.0)使用最新版本的客户端和节点SDK。您在服务器上使用什么版本的FIrebase函数?我正在使用v1.0.2(最新版本)将我的函数部署到FIrebase,我猜你是在问这个问题?我看到你忘了用projectd初始化配置。。您的URL上有“未定义”
if (window.location.hostname === "localhost") {
console.log("localhost detected!");
firebase.functions().useFunctionsEmulator('http://localhost:5001');
};