nodejs框架之Express错误:Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the clie

错误代码:

(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删除失败");
    }

 

你可能感兴趣的:(express)