Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase HttpScalable仿真器在React Native中阻止未处理的承诺拒绝_Javascript_Typescript_Firebase_React Native - Fatal编程技术网

Javascript Firebase HttpScalable仿真器在React Native中阻止未处理的承诺拒绝

Javascript Firebase HttpScalable仿真器在React Native中阻止未处理的承诺拒绝,javascript,typescript,firebase,react-native,Javascript,Typescript,Firebase,React Native,我有一个Firebase函数,可以通过uid搜索用户: export const findUserByUid = functions.https.onCall(async (data, context) => { const foundUser = await admin.auth().getUser(data.uid); if (foundUser) { return {user: foundUser.email}; } return

我有一个Firebase函数,可以通过uid搜索用户:

export const findUserByUid = functions.https.onCall(async (data, context) => {

    const foundUser = await admin.auth().getUser(data.uid);

    if (foundUser) {
        return {user: foundUser.email};
    }

    return {user: null};
});
这些函数由以下命令提供:
npm run build&&firebase仿真器:start--only函数

在React Native中,我以以下方式初始化Firebase:

import "firebase/firestore";
import "firebase/functions";
import firebase from "firebase";

let firebaseConfig: Object = {
   ...
};

const firebaseApp = firebase.initializeApp(firebaseConfig)

const firebaseStore = firebaseApp.firestore();
const firebaseAuth = firebaseApp.auth();
const firebaseFunction = firebaseApp.functions();

if (__DEV__) {
    console.log("Initialize emulator for cloud functions");
    firebaseFunction.useEmulator('localhost', 5001);
    console.log(firebaseFunction)
}

export {firebaseStore, firebaseAuth, firebaseFunction};
调用firebase函数:

const findUser = async (): Promise<void> => {
        const findUserByUid = await firebaseFunction.httpsCallable('findUserByUid')({uid: "mock"});
        const result = findUserByUid.data;
        console.log(result)
}
我做错了什么?firebase emulator套件中也没有任何记录

更新:Firebase功能

export const findUserByUid = functions.https.onCall(async (data, context) => {
    try {
        const foundUser = await admin.auth().getUser(data.uid);
        if (foundUser) {
            return {user: foundUser.email};
        }
    } catch (error) {
        return new https.HttpsError("not-found", error);
    }
    return {user: null};
});

您是否为emulator设置了凭据,以便它可以与AdminSDK交互?如果直接在仿真器中调用函数会发生什么?您可以运行
firebase functions:shell
,然后直接在@ThomasKuhlmann处执行该函数,如果我直接在shell中调用该函数,则会得到响应,但也会出现以下错误:(节点:6820)未经处理的Promisejection警告:错误[ERR_HTTP_HEADERS_SENT]:无法在发送到客户端>的ServerResponse.setHeader(_http_outgoing.js:558:11)后设置头。在云函数中使用try/catch并正确记录错误时会发生什么?您可以稍后使用httpsErrors返回一个更有意义的响应@ThomasKuhlmann Yes然后我从shell中没有得到错误,但是通过调用firebaseFunction.httpscalable上的函数仍然没有成功
export const findUserByUid = functions.https.onCall(async (data, context) => {
    try {
        const foundUser = await admin.auth().getUser(data.uid);
        if (foundUser) {
            return {user: foundUser.email};
        }
    } catch (error) {
        return new https.HttpsError("not-found", error);
    }
    return {user: null};
});