【发布时间】:2021-01-24 20:43:39
【问题描述】:
我在服务器上使用 firebase 函数进行 API 调用。 70% 的情况下一切正常,但突然之间我的一些函数调用开始无法执行,给我的 API 一个 404,并且在接下来的几个小时内无法工作。
在我的 StackDriver 中,我可以看到在我尝试时没有再次调用该函数。我的 API 只是给了我一个 404 却没有到达服务器。
以下是偶尔失败的调用之一。转到我正在获取的 URL,GET 结果总是出现,所以我不知道问题是什么。
API 调用:
const getCreators = () => {
return window
.fetch(url + '/get-creators', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
})
.then((res) => {
console.log(res);
if (res.status === 200) {
return res.json();
} else {
return null;
}
})
.then((data) => {
if (!data || data.error) {
return null;
} else {
return data;
}
});
};
服务器代码:
const app = express();
app.get('/get-creators', async (req, res) => {
console.log('creators: ');
creators
.find()
.toArray()
.then((result) => {
console.log(result);
res.status(200).send(result);
})
.catch(() => {
console.log('error');
res.send('error');
});
});
app.listen(4242, () => console.log(`Node server listening at https ${4242}!`));
exports.app = functions.https.onRequest(app);
【问题讨论】:
-
如果请求没有到达服务器,为什么响应是 404?通常,如果网络请求未到达服务器,则会出现网络错误。如果您收到响应(即使是错误响应),您已经到达服务器。
-
@3limin4t0r 这就是我的想法,这没有任何意义。它可能正在尝试在本地搜索,但将我的结果记录在 api 中它具有正确的 url 作为尝试到达。
-
@3limin4t0r 找到了答案。服务器偶尔在本地听每个人,而不是告诉我。不过谢谢!
标签: javascript firebase google-cloud-platform google-cloud-functions