Firebase Functions v.9 - 使用 connectFunctionsEmulator() 后出现内部错误
Firebase Functions v.9 - Internal Error after using connectFunctionsEmulator()
我正在尝试为我的 firebase 函数设置模拟器,但我收到了这个烦人的内部错误。让我们从代码开始。
const requestApi = () => {
const functions = getFunctions(app);
connectFunctionsEmulator(functions, "127.0.0.1", 5001);
const helloWorld = httpsCallable(functions, "helloWorld");
helloWorld()
.then((result) => {
console.log(result);
})
.catch((error) => {
console.log(error.message, error.code, error.details);
});
};
所以这个函数很好用,除非我添加 connectFunctionsEmulator(functions, "127.0.0.1", 5001);
到它。
catch 块只记录这条无用的消息。
internal functions/internal undefined
我还收到有关 Timer 的警告。
Setting a timer for a long period of time, i.e. multiple minutes, is a
performance and correctness issue on Android as it keeps the timer
module awake, and timers can only be called when the app is in the
foreground. See https://github.com/facebook/react-native/issues/12981
for more info. (Saw setTimeout with duration 70000ms)
就是这样。很奇怪,不是吗:/?
-- 云函数
exports.helloWorld = functions.https.onRequest(async (req, res) => {
res.json({ result: `Check` });
});
我在这里添加这个是因为有人可能对此感到好奇。但是,正如我之前提到的,功能在部署后效果很好。 我几乎可以肯定这是客户端问题。
无论提供什么 host 或 port 我都会收到此错误。即使 Emulator 为 off.
也会抛出错误
好的,所以在与这个狗屎战斗了将近一周之后!
当你像我一样使用 Expo Go 时。您应该复制您在其上模拟您的应用程序的主机地址,并使用您模拟您的功能(或其他工具)的相同地址。
app.json
{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"emulators": {
"functions": {
"host": "192.168.0.104",
"port": 5001
}
}
}
和requestApi
函数的最终代码
const requestApi = async () => {
const functions = getFunctions(app);
connectFunctionsEmulator(functions, "192.168.0.104", 5001); <--- ADDRESS!!!
const helloWorld = httpsCallable(functions, "helloWorld");
helloWorld()
.then((result) => {
console.log(result);
})
.catch((error) => {
console.log(error.message, error.code, error.details);
});
};
我正在尝试为我的 firebase 函数设置模拟器,但我收到了这个烦人的内部错误。让我们从代码开始。
const requestApi = () => {
const functions = getFunctions(app);
connectFunctionsEmulator(functions, "127.0.0.1", 5001);
const helloWorld = httpsCallable(functions, "helloWorld");
helloWorld()
.then((result) => {
console.log(result);
})
.catch((error) => {
console.log(error.message, error.code, error.details);
});
};
所以这个函数很好用,除非我添加 connectFunctionsEmulator(functions, "127.0.0.1", 5001);
到它。
catch 块只记录这条无用的消息。
internal functions/internal undefined
我还收到有关 Timer 的警告。
Setting a timer for a long period of time, i.e. multiple minutes, is a performance and correctness issue on Android as it keeps the timer module awake, and timers can only be called when the app is in the foreground. See https://github.com/facebook/react-native/issues/12981 for more info. (Saw setTimeout with duration 70000ms)
就是这样。很奇怪,不是吗:/?
-- 云函数
exports.helloWorld = functions.https.onRequest(async (req, res) => {
res.json({ result: `Check` });
});
我在这里添加这个是因为有人可能对此感到好奇。但是,正如我之前提到的,功能在部署后效果很好。 我几乎可以肯定这是客户端问题。
无论提供什么 host 或 port 我都会收到此错误。即使 Emulator 为 off.
也会抛出错误好的,所以在与这个狗屎战斗了将近一周之后!
当你像我一样使用 Expo Go 时。您应该复制您在其上模拟您的应用程序的主机地址,并使用您模拟您的功能(或其他工具)的相同地址。
app.json
{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"emulators": {
"functions": {
"host": "192.168.0.104",
"port": 5001
}
}
}
和requestApi
函数的最终代码
const requestApi = async () => {
const functions = getFunctions(app);
connectFunctionsEmulator(functions, "192.168.0.104", 5001); <--- ADDRESS!!!
const helloWorld = httpsCallable(functions, "helloWorld");
helloWorld()
.then((result) => {
console.log(result);
})
.catch((error) => {
console.log(error.message, error.code, error.details);
});
};