节点js - 抛出新的错误('发送后无法设置标题');

问题描述:

我得到了像标题一样的错误。 以下是我的代码。请你能有人给我建议吗?节点js - 抛出新的错误('发送后无法设置标题');

我想我只发送一次'app.get' 我想划分index.html和splash.html的大小写。 在回应之前,我想延迟1秒。

app.use(delay(1000)); 
app.get('/index.html', function(req, res) { 
    var pathName = req.url; 
    console.log('!!!!!!!!!!!'); 
    console.log(pathName); 

    fs.readFile(__dirname + '/views/index.html', function(error, data) { 
     console.log(__dirname); 
     if(error){ 
      console.log(error); 
     } else { 
      console.log("load html"); 
      console.log(req.url); 
      csp.add(req, res, options); 
      res.render(__dirname + '/views/index.html'); 
      res.end(); 
     } 
    });  
}); 


app.get('/splash.html', function(req, res) { 
    var pathName = req.url; 
    console.log('!!!!!!!!!!!'); 
    console.log(pathName); 


    fs.readFile(__dirname + '/views/splash.html', function(error, data) { 
     console.log(__dirname); 
     if(error){ 
      console.log(error); 
     } else { 
      console.log("load html"); 
      console.log(req.url); 
      csp.add(req, res, options); 
      res.render(__dirname + '/views/splash.html'); 
      res.end(); 
     } 
    });  
}); 
+0

当你删除'app.use(delay(1000))'你还会得到同样的错误吗? – turmuka

+0

不,我没有得到'延迟'的错误。但我想延迟使用快递。你认为这是问题吗? –

尝试取出后res.end()res.renderrender将结束的响应。如果您想设置任何标题,请先执行。

此外,实现延迟的最佳方法可能是在发送响应之前使用setTimeout

实现此目的的最佳方法是使用rx模块,请参阅下面的代码。响应在3秒后发送,这是我用于延迟的模块。

var app = require('express')(); 
const timeout = require('connect-timeout'); 
const Rx = require('rx'); 

// Response will be delayed for 3 seconds 
app.get('/', function(req, res) { 
    Rx.Observable.create((observer) => { 
    observer.onNext({ 
     response: 'potato' 
    }) 
    observer.onCompleted() 
    }) 
    .delay(new Date(Date.now() + 3000)) //setting it to 3 seconds 
    .subscribe((x) => { 
     console.log(x);     //logs response: 'patato' 
     console.log('this runs'); 
     res.status(200).send("3 seconds"); 
    }, (e) => { 
     console.log('this does not'); 
    }) 
    }); 

app.listen(4000); 
+0

谢谢你的回复:)我可以试试这个,没有问题! –