0

私は単純なログイン フォームに取り組んでおり、ログイン (成功) した後、製品のリストを表示したいと考えています。ただし、ログイン フォーム自体はレンダリングされません。これが私が持っているものですapp.js

app.get ( '/users/new', routes.api.user.isLogged, routes.api.user.new );

このisLoggedメソッドは、セッションが存在するかどうかのみを示します。そこは問題ないようです。

私のuser.jsファイルでは、新しい方法で、これは私が持っているものです:

  exports.new = function(req, res) {
    res.format({
      html: function() {
        return res.render('users/new', {title: 'Login'});
      }
    });
  };

ためらうことなくレンダリングされることもあれば、次のようなエラーが表示されることもあります

domain.js:66
    throw er;
          ^
Error: Can't render headers after they are sent to the client.
    at ServerResponse.OutgoingMessage._renderHeaders (http.js:715:11)
    at ServerResponse.res._renderHeaders (/Users/kaushik/dev/my_repos/retailer-catalog-backend/node_modules/kue/node_modules/express/node_modules/connect/lib/patch.js:76:25)
    at ServerResponse.writeHead (http.js:1083:20)
    at ServerResponse._implicitHeader (http.js:1040:8)
    at ServerResponse.module.exports.res.write (/Users/kaushik/dev/my_repos/retailer-catalog-backend/node_modules/express/node_modules/connect/lib/middleware/compress.js:79:34)
    at ondata (stream.js:38:26)
    at EventEmitter.emit (events.js:96:17)
    at ReadStream._emitData (fs.js:1368:10)
    at afterRead (fs.js:1350:10)
    at Object.wrapper [as oncomplete] (fs.js:362:17)

なぜこれが起こるのかよくわかりません。私はエクスプレスとノードが初めてです。

編集

isLoggedメソッドには:

 exports.isLogged = function(req, res, next) {  
   if (req.session.user) {
     res.redirect('/' + req.session.user.username + '/retailers')
   } else{
     return next();
   };
 };

これはapp.jsサーバー構成です。

  app.configure(function(){
    app.set('views', __dirname + '/views');
    app.set('view engine', 'hbs'); 
    app.use(express.favicon());
    app.use(express.logger('dev'));
    app.use(express.compress());
    app.use(express.methodOverride());
    app.use(require('less-middleware')({ src: __dirname + '/routes/web/public' }));
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.session({ secret: '5234523451' })); 
    app.use(validator);
    app.use(app.router);
    app.use(express.static(path.join(__dirname, 'routes', 'web', 'public')));
  });
4

0 に答える 0