错误代码:
(node:16292) UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
【非常重要】错误原因:Express的
res.send() 或res.json()这类客户端返回的方法仅返回一次,如果多次返回就会出现这个错误!
你的方法还api方法还是内部方法需要做一个判断,如果遇到错误才直接返回客户端,非错误,在内部方法是不能返回客户端的!
案例分享:
static async deleteCodeFromRedis (res, phone_number, isApi = false) {
let result = await ExpressBaseCRUD.expressRequestServerHandleCRUD(res,
nodeAdminServerConfig.sms.delete_code_from_redis, {
phone_number: phone_number,
});
console.log(`从redis删除手机号${phone_number}的验证码code成功`);
// 如果是api访问,不管成功还是失败,直接返回客户端!
if (isApi) {
return OwnExpressResponse.resultSuccessOrFail(res,
result, "code删除成功", "code删除失败");
}
return result || OwnExpressResponse.fail(res, "code删除失败");
}