我在服务器上使用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);
找到了。您不希望在服务器上出现以下代码:
app.listen(4242, () => console.log(`Node server listening at https ${4242}!`));
我评论了这段代码,重新发布,一切都很好。
我认为这样做并没有什么不同,但很明显,偶尔它会尝试让服务器在本地侦听,这给了我404分。