2017-04-09 54 views
0

我是新來的節點和我一共有三個JS文件:試圖瞭解快速路由器功能

  1. Index.js包含以下代碼:

    var express = require('express'); 
    var router = express.Router(); 
    
    
    /* GET home page. */ 
    router.get('/', function(req, res, next) { 
    console.log(arguments); 
    if(req.isAuthenticated()){ 
        res.render('index', { 
         title: 'sp1 - My Application', 
         user: req.user 
        }); 
    }else{ 
        console.log('not authentcated sending to authenticate'); 
        res.redirect('/login'); 
    } 
    }); 
    module.exports = router; 
    
  2. SSO.js包含下面的代碼:

    var express = require('express'); 
    var router = express.Router(); 
    router.get('/spinitsso-redirect', function (req, res) { 
    console.log('got a redirection from idp'); 
    sp.sendLoginRequest(idp, 'redirect', function (url) { 
        res.redirect(url); 
        }); 
    }); 
    module.exports = router; 
    
  3. App.js包含以下代碼:

    var express = require('express'); 
    var app = express(); 
    var server = app.listen(4002, function() { 
    var host = server.address().address; 
    var port = server.address().port; 
    console.log('Example app listening at http://%s:%s', host, port); 
    }); 
    

問:

如何是兩個不同的文件(index.js和sso.js)能夠中間件添加到同一個路由器的實例嗎?這是Express的靜態屬性,你可以從你的代碼中的任何JS文件添加路由器/ middlerware?編號: 添加缺少module.exports = router;在index.js和SSO.js文件中。這行代碼如何工作?

Link完成代碼

+0

你好express是使用定義的:var express = require('express');在這三個文件中的每一箇中 – nitinsh99

+0

你想要做什麼? – proton2b

回答

0

您的代碼缺少module.exports =路由器;

var express = require('express'); 
var router = express.Router(); 

router.get('/', function (req, res, next) { 
    res.render('index'); 
}); 

module.exports = router; 
+0

嘿,是啊,index.js和sso.js都包含module.exports = router; 你介意解釋在這種情況下如何工作?我已經添加了鏈接來完成問題中的代碼。 – nitinsh99