2016-07-05 33 views
2

我正在通過使用Express,EJS和Node的新波士頓教程this。我的代碼幾乎完全像他一樣設置,除了最後使用app.listen而不是module.exports = send。快速錯誤 - TypeError:express.Router不是函數

我收到以下錯誤,當我嘗試運行我的節點計劃:

var router = express.Router(); 
       ^
TypeError: express.Router is not a function 

這裏是我的app.js:

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 

var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

// uncommet after placing your favicon in /public 
//app.use(favicon(__dirname + '/public/favicon.ico')); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 
app.use('/users', users); 

// catch 404 and forward error to handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

app.listen(3000, function(){ 
    console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); 
}); 

和我的index.js文件:

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

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

module.exports = router; 

我以前做過類似的教程,並沒有出現這個問題。任何想法可能會造成這種情況?

+0

您是否安裝了'express'?檢查你的'package.json'。 – Kairat

+0

是的。在那。當index.js文件正好時,程序運行得很好:exports.index = function(req,res){res.render('index',{title:'Express'}) }; –

+0

@crash斯普林菲爾德,你有沒有得到這個問題的答案。我也有同樣的問題。 – Les

回答

0

試試這個 - 從express/lib/application.js的示例代碼中獲得。

var http = require('http') ,https = require('https) ,express = require('express')

var app = express()

爲我工作。很可能,只需要http/https中的一個或另一個。