2017-09-05 69 views
0

我得到了像標題一樣的錯誤。 以下是我的代碼。請你能有人給我建議嗎?節點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

不,我沒有得到'延遲'的錯誤。但我想延遲使用快遞。你認爲這是問題嗎? –

回答

1

嘗試取出後res.end()res.renderrender將結束的響應。如果您想設置任何標題,請先執行。

此外,實現延遲的最佳方法可能是在發送響應之前使用setTimeout

1

實現此目的的最佳方法是使用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

謝謝你的回覆:)我可以試試這個,沒有問題! –

相關問題