(узел: 9464) UnhandledPromiseRejectionWarning: Ошибка [ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту - PullRequest
0 голосов
/ 24 октября 2019

Привет, я пытаюсь написать тест мокко чай, который проверяет, может ли jwt с истекшим сроком действия создать новую запись

 it("Should NOT Allow user to create a new diary entry with an expired Token", done => {
  const entryTestData5 = {
    title: "diary",
    detail: "my new diary"
  };
  const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmaXJzdE5hbWUiOiJmaXJzdE5hbWUiLCJsYXN0TmFtZSI6Imxhc3ROYW1lIiwiZW1haWwiOiJleGFtcGxlQGdtYWlsLmNvbSIsInJlbWluZGVyIjoib2ZmIiwiaWF0IjoxNTcxOTEyOTc2LCJleHAiOjE1NzE5MTI5Nzh9.2ETTnItxbaPJiAcDubq2fxSr6SXcPEo3VN8lcjVcl7M";
  chai
    .request(app)
    .post("/api/v1/entry")
    .set("auth", token)
    .send(entryTestData5)
    .end((err, res) => {
      expect(res).to.have.status(403);
      expect(res.body).to.have.property("message");
      done();
    });
});

, и я получаю следующее предупреждение при попытке запустить тест

(node:9464) UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:470:11)
at ServerResponse.header (C:\Users\PRO\Desktop\API\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (C:\Users\PRO\Desktop\API\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (C:\Users\PRO\Desktop\API\node_modules\express\lib\response.js:267:15)
at ServerResponse.send (C:\Users\PRO\Desktop\API\node_modules\express\lib\response.js:158:21)
at _callee$ (C:\Users\PRO\Desktop\API\Server\middleware\authenticate.js:1:7679)
at tryCatch (C:\Users\PRO\Desktop\API\node_modules\regenerator-runtime\runtime.js:45:40)
at Generator.invoke [as _invoke] (C:\Users\PRO\Desktop\API\node_modules\regenerator-runtime\runtime.js:271:22)
at Generator.prototype.(anonymous function) [as next] (C:\Users\PRO\Desktop\API\node_modules\regenerator-runtime\runtime.js:97:21)
at asyncGeneratorStep (C:\Users\PRO\Desktop\API\node_modules\@babel\runtime\helpers\asyncToGenerator.js:3:24)
at _next (C:\Users\PRO\Desktop\API\node_modules\@babel\runtime\helpers\asyncToGenerator.js:25:9)
at process._tickCallback (internal/process/next_tick.js:68:7)

(узел: 9464) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо в результате выброса внутри асинхронной функции без блока catch, либо в результате отклонения обещания, которое не было обработано с помощью .catch (). (идентификатор отклонения: 1) (узел: 9464) [DEP0018] Предупреждение об устаревании: отклонения необработанного обещания устарели. В будущем отказы от обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом выхода.

, если кто-то может помочь, пожалуйста, выполните

, ниже указан мой сервер

import jwt from "jsonwebtoken";
import userModel from "../models/User";

async function checkToken(req, res, next) {
 const token = await req.headers.auth; 
 let InUserEmail;
 if (typeof token !== "undefined") { jwt.verify(token, process.env.SECRET, (err, result) => {
     if (err) {
       if (err.name === "TokenExpiredError") {
         return res.status(403).send({
           message: "TokenExpired"
         });
       }
     } else {
       InUserEmail = result.email;
       req.tokenData = jwt.verify(token, process.env.SECRET);
     }
   });
   const authUser = userModel.users.find(user => user.email === InUserEmail);
   if (!authUser) {
     return res.status(401).send({
       message: "not authorized to do the task"
     });
   } next();
 } else {
   res.status(403).send({
       message: "not authorized to do the task(forbidden)"
     });
}}
export default checkToken;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...