NodeJs错误:发送后无法设置标头

时间:2017-07-17 13:22:48

标签: node.js express

我是nodejs的新手,并坚持使用错误:发送后无法设置标头。以下是我的代码。请帮忙。我用邮递员来测试这段代码。它适用于前2次点击,但在第3次点击时会出现此错误。

const http = require('http');

const fs = require('fs')

module.exports.verifyPyeval5 = function(request, response){
    let filePath = "D:/PyEval/NewPyEvalRequests/solution.txt";  
    fs.readFile(filePath, 'utf8', function (err,data) {
       var json = JSON.parse(data);
        post_call(json,function(res){
            response.status(200)
        .json(res);
        });
    });   

};

var post_call = function(new_val,callback){
    var post_req = http.request(post_options, function(res) { 
        res.setEncoding('utf8');
        res.on('data', function (chunk) {
            callback(chunk);
        });
      });
      post_req.write(JSON.stringify(new_val));
      post_req.end();

};

var post_options = {
      host: 'acclabserv',
      port: '8080',
      path: '/generate',
      method: 'POST',
      headers: {
          'Content-Type': 'application/json'
      }
  };

1 个答案:

答案 0 :(得分:2)

我知道问题是回调函数它会被调用一次。

var post_call = function(new_val,callback){
    var post_req = http.request(post_options, function(res) { 
        res.setEncoding('utf8');
        var str = null;
        res.on('data', function (chunk) {
            str += chunk;
        });
      res.on('end', function () {
            callback(str);
        });
      });
      post_req.write(JSON.stringify(new_val));
      post_req.end();

};

还有一点需要注意,我不知道chuck的类型,如果它是一个对象,你想要响应的对象数组,那么你可以使用这个

  

var str = []; //在req.on('data')str.push(chunck)