簡體   English   中英

發送標頭后無法設置標頭

[英]Can't set headers after they are sent error

在我的app.js中,我這樣做

app.use(function(req, res, next){

  if(!req.user){
    return res.redirect('/login_');
  }
  next();
})

我沒有發現任何錯誤,並且在route / index.js中

router.get('/login_', function(req, res) {
    res.render('login', { user : req.user });
});

但是我有一個錯誤。 我知道這是由於請求未結束導致的,但是我上面的代碼有什么問題? 這個錯誤毫無頭緒。

route / index.js的完整代碼

 var express = require('express'); var passport = require('passport'); var Account = require('../models/account'); var router = express.Router(); var multer = require('multer'); var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'public/uploads') } }) var upload = multer({ storage: storage }) var Photo = require('../models/photos'); router.get('/', function(req, res, next) { if(req.user){ res.redirect('/'+req.user.username+'/screen'); }else{ res.redirect('/login_'); } }); router.get('/:username/screen', function(req, res, next) { res.render('screen', { user : req.user }); }); router.get('/:username', function(req, res, next) { var excludes = ["/login_", "/register_","/logout_"]; if (excludes.indexOf(req.originalUrl) > -1){ return next(); }else{ res.render('upload_photo'); } }); router.post('/:username', upload.any(), function(req, res, next) { var excludes = ["/login_", "/register_","/logout_"]; if (excludes.indexOf(req.originalUrl) > -1){ return next(); }else{ var photo = new Photo({ photo:req.files[0].filename, caption:req.body.caption }); photo.save(photo); res.sendStatus(200); } }); router.get('/:username/manager', function(req, res, next) { Photo.getAllPhotos(function(err,result){ var headers = req.headers.host; var pathname = '128.199.128.108:3000'; if(headers.indexOf('localhost') > -1){ pathname = 'localhost:3000' } res.render('manager',{pathname:pathname,photos:result}); }); }); //* passport for register/login_ *// router.get('/register_', function(req, res) { res.render('register', { }); }); router.post('/register_', function(req, res) { Account.register(new Account({ username : req.body.username }), req.body.password, function(err, account) { if (err) { return res.render('register', { account : account }); } passport.authenticate('local')(req, res, function () { res.redirect('/'); }); }); }); router.get('/login_', function(req, res) { res.render('login', { user : req.user }); }); router.post('/login_', passport.authenticate('local'), function(req, res) { res.redirect('/'); }); router.get('/logout_', function(req, res) { req.logout(); res.redirect('/login_'); }); module.exports = router; 

您正在此行之前打印某些內容。 跟蹤該位置,或指示服務器將某些輸出緩存到用戶。 (如果服務器未向用戶顯示任何內容,即使代碼嘗試先打印某些內容,也可以發送標頭)但這是常識,不熟悉node.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM