У меня есть HTTP-функция, выполняемая несколько раз в секунду (точной статистики у меня нет).
Иногда запрос возвращает данные, как предполагалось, а иногда возвращает текст ошибки:
<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>500 Server Error</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Server Error</h1>
<h2>The server encountered an error and could not complete your request.<p>Please try again in 30 seconds.</h2>
<h2></h2>
</body></html>
Когда это происходит, это имеет место для всех моих функций HTTP. Выполнение одного и того же запроса через 5 минут часто работает.
Теперь я мог представить, что это ошибка в моем коде, но я использую промежуточное ПО, чтобы перехватить все ошибки и ответить как JSON!
Вот моя экспортированная облачная функция:
const app = express();
app.use(cors({origin: true, credentials: true})); // Allow cross-origin requests
app.get('/', this.reportRequest.bind(this));
app.use(errorMiddleware); // Handle errors
export const report = functions.https.onRequest(app);
А вот errorMiddleware
:
export const errorMiddleware: ErrorRequestHandler = async (e, req, res, next) => {
const executionId = req.header('function-execution-id');
const message = 'message' in e ? e.message : e;
const code = e.code && e.code > 200 && e.code < 600 ? e.code : 500;
res.status(code).json({message, executionId});
next();
};