Node Express在重定向后没有加载Javascript

时间:2013-02-20 00:12:34

标签: javascript node.js express

我有一个Node.js Express应用程序,它会在允许您进入主页之前检查身份验证。由于原因,我无法弄清楚它加载我的CSS,但重定向后不是我的JavaScript。 这是我的app.js文件中的相关代码:

app.get('/',journal.logInCheck,journal.index);
app.get('/logon',journal.logon);
app.post('/authenticate',journal.authenticate);

这是我的journal.js文件,带有伪代码:

/***************************************
    Logon Form and Authentication Routes
****************************************/

/** Check for Authentication **/

exports.logInCheck = function(req,res,next){
    console.log('login check');
    if(req.session.auth == true){
        console.log('login check = true');
        next();
    }else{
        console.log('login check = false');
        res.redirect('/logon');
    }
}

/** Logon Form **/

exports.logon = function(req,res){
    res.render('logon',{layout:'logonlayout',title:'Logon'});    
}

/** Authenticates data after it's been submitted by form above **/

exports.authenticate = function(req,res,next){
    console.log('authenticating');
    if(req.body.username=="at" && req.body.password=="wm"){
        req.session.auth = true;
        console.log('logon success');
        res.redirect('/');
    }else{
        req.session.auth = false;
        console.log('logon fail');
        res.redirect('/logon');
    }

}

发生的事情是,一旦我正确验证,程序重定向,我的节点控制台只显示请求的两个css文件,但不显示五个或六个javascript文件。

另外我注意到网址没有被完全重写。当它应显示http://domain.com:3000/#home

时,它会显示htt://domain.com:3000 / logon #home

这里要求的是layout.jade。这是加载任何javascript的唯一文件,并且对所有页面都是通用的。仅供参考,如果我从网址中删除登录#home,页面确实加载完全正常。

!!!
html
  head
    title= title
    link(rel='stylesheet', href='/jqtouch-1.0-b4-rc/themes/css/jqtouch.css', type='text/css', media='screen')
    link(rel='stylesheet', href='/stylesheets/style.css', type='text/css', media='screen')
    script(src="/jqtouch-1.0-b4-rc/src/lib/zepto.js", charset="utf-8")
    script(src="/jqtouch-1.0-b4-rc/src/jqtouch.js", charset="utf-8")
    script(src="/javascripts/ajax.js")
    script(src="/javascripts/moderniz.js")
    script(src="/javascripts/sjcl.js")
    script
      var jQT = new $.jQTouch({
       icon: 'jqtouch.png',
       addGlossToIcon: true,
       startupScreen: 'jqt_startup.png',
       statusBar: 'black'
      });
  body
    block content

这是journal.index

exports.index = function(req, res){
res.render('journal', { title: 'Journal App' });
};

更新:我设置了一个测试应用程序,仅用于隔离问题。当我的jade模板中存在以下JQTouch代码时,Express重定向无法正常工作。

script
  var jQT = new $.jQTouch({
  icon: 'jqtouch.png',
  addGlossToIcon: true,
  startupScreen: 'jqt_startup.png',
  statusBar: 'black'
 });

0 个答案:

没有答案