FeathersJs:无法设置 headers

FeathersJs: Cannot set headers

我正在尝试在 feathersjs 应用程序的路线上设置 content-type header。

我一直 运行 进入这个错误 - error: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

这就是我尝试设置 headers --

的方式
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(); 也设置了 header。我该如何覆盖它?

调用服务前需要先调用中间件, 试试这个

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

错误不是来自您的中间件,而是 Feathers 注册的 after 因为您要以 res.end() 结束响应,然后 still 调用 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 一个对象,因此它至少应该是 return Promise.resolve(data);return Promise.resolve({});