FeathersJs:无法设置标题

时间:2018-05-04 09:37:07

标签: node.js express feathersjs

我正在尝试在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 :(得分:1)

错误不是来自您的中间件,而是在之后注册的Feathers,因为您正在使用res.end()结束响应,然后仍然调用{{1这可能不是你想要的。它应该是

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);

答案 1 :(得分:0)

您需要在调用服务之前调用中间件, 试试这个

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);