FeathersJs: невозможно установить заголовки - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь установить заголовок типа содержимого на маршруте в приложении feathersjs .

Я продолжаю сталкиваться с этой ошибкой - error: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

Вот как я пытаюсь установить заголовки -

const myService = {
  create(data, params) {   // create == POST request
    console.log(data);
    return Promise.resolve(); 
  }
};

function setContent(req, res, next) {
  res.setHeader('content-type', 'text/plain');
  res.end();
  next();
}

app.use('/incoming', myService, setContent);

Я предполагаю, return Promise.resolve(); также устанавливает заголовок. Как мне переопределить это?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Ошибка не от вашего промежуточного ПО, а от зарегистрированного Feathers после , поскольку вы заканчиваете ответ res.end(), а затем все еще , вызывая next(), что, вероятно, не то, что ты хочешь. Это должно быть либо

function setContent(req, res, next) {
  res.setHeader('content-type', 'text/plain');
  res.end();
}

Или

function setContent(req, res, next) {
  res.setHeader('content-type', 'text/plain');
  next();
}

Кроме того, сервисные методы всегда должны возвращать объект, поэтому он должен быть не менее return Promise.resolve(data); или return Promise.resolve({});

0 голосов
/ 04 мая 2018

Вам необходимо вызвать промежуточное программное обеспечение, прежде чем звонить в службу, попробуйте это

const myService = {
  create(data, params) {   // create == POST request
    console.log(data);
    return Promise.resolve(); 
  }
};

function setContent(req, res, next) {
  res.setHeader('content-type', 'text/plain');
  next();
}

app.use('/incoming', setContent, myService);
...