错误的原因可能是:在发送标题后无法设置标头

时间:2014-11-27 05:52:46

标签: javascript node.js

大家好我得到以下错误

Error: Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:331:11) at ServerResponse.header (/Users/rajesh/Documents/NodeProject/nodetest1/node_modules/express/lib/response.js:662:10) at ServerResponse.send (/Users/rajesh/Documents/NodeProject/nodetest1/node_modules/express/lib/response.js:146:12) at fn (/Users/rajesh/Documents/NodeProject/nodetest1/node_modules/express/lib/response.js:896:10) at View.exports.renderFile [as engine] (/Users/rajesh/Documents/NodeProject/nodetest1/node_modules/jade/lib/jade.js:325:12) at View.render (/Users/rajesh/Documents/NodeProject/nodetest1/node_modules/express/lib/view.js:76:8) at Function.app.render (/Users/rajesh/Documents/NodeProject/nodetest1/node_modules/express/lib/application.js:527:10) at ServerResponse.res.render (/Users/rajesh/Documents/NodeProject/nodetest1/node_modules/express/lib/response.js:900:7) at /Users/rajesh/Documents/NodeProject/nodetest1/app.js:57:9 at Layer.handle_error (/Users/rajesh/Documents/NodeProject/nodetest1/node_modules/express/lib/router/layer.js:58:5)

任何人都可以告诉我它可能是什么原因。我的代码是

router.post('/readCSVFile',function(req,res){

if(typeof req.files.fileCSV === 'undefined'){
    var err = {message: 'Please Select CSV file'};
    res.render('error', {message: err.message,error: err});
}

    var reader = yaCSV.createCsvFileReader(req.files.fileCSV.path,{
        'separator':',', 'quote':'"', 'escape':'"'
    });

    reader.addListener('data',function(data){
        var json = createJsonObject(data);
        _data.push(json);
        });

    reader.addListener('error',function(err){
        console.error("err.status " + err.status);
        //err.status = 500;
        //res.status(500);
        err.message = 'Select the proper CSV file';
        res.render('error', {message: err.message,error: err});
        console.error(util.inspect(err));
    });
    reader.addListener('end', function() {
        res.render('renderCSV',{data: _data});
    });
    var _data = [];

});

2 个答案:

答案 0 :(得分:0)

添加"返回"每个" res.render"之后的声明命令。

答案 1 :(得分:0)

我弄明白为什么它不适合我。我在回调函数中遇到了多个错误,这些错误在'ya-csv'中注册了错误。因为我已经发送了一个响应。我的代码正在尝试发送第二个响应,因此也发送错误。我通过put和if条件将其整理出来并制作一个。

由于 -Learner