3

Node と Express を使用して作成された RESTFUL API 呼び出しを行っているときに、ERROR を下回っています。

注:最初の呼び出しでは、期待どおりの JSON 応答が得られました。2回目にヒットしようとすると、このエラーが発生しました。

  http.js:704
    throw new Error('Can\'t set headers after they are sent.');
          ^
Error: Can't set headers after they are sent.
    at ServerResponse.OutgoingMessage.setHeader (http.js:704:11)
    at ServerResponse.res.setHeader (/Users/rain/node-js-sample/node_modules/express/node_modules/connect/lib/patch.js:62:20)
    at ServerResponse.res.header (/Users/rain/node-js-sample/node_modules/express/lib/response.js:280:8)
    at ServerResponse.res.json (/Users/rain/node-js-sample/node_modules/express/lib/response.js:135:8)
    at EventEmitter.<anonymous> (/Users/rain/node-js-sample/web.js:82:11)
    at EventEmitter.emit (events.js:117:20)

サーバーコード、

app.get('/service/:id/:startDate/:endDate', function(req, res) {
  if(req.params.id.length <= 0 || req.params.startDate.length <= 0 || req.params.endDate.length <= 0) {
    res.statusCode = 404;
    res.send('Error 404: Invalid start date or end date provided');
  } else {
    rest.get("http://localhost:8080/service/" + req.params.chartId  + 
      "/" + req.params.startDate +
      "/" + req.params.endDate).on('complete', function(data, response) {
      console.log(data);
      res.json(data);
    });
  }
});
4

1 に答える 1

1

回避策を見つけました。JSON レスポンスを文字列に変換した後。出来た。

res.send(JSON.stringify(data));
于 2013-07-18T22:06:33.147 に答える