无法导入我的路线模块

当我尝试使用app.use(require(./routes))将我的路由模块导入到主应用中时,我得到app.use() requires middleware functions 。 我应该如何去module.exportsfunction,使其工作?

我的路线:

 var express = require('express'), auth = require('../middleware/auth.js'), user = require('../models/user.js'), formidable = require('formidable'); module.exports = (function () { app.post('/', function (req, res) { var form = new formidable.IncomingForm(); form.parse(req, function (err, fields, files) { user.create(fields.username, fields.email, fields.password); }); res.render('./game/game.html', {}); }); app.get('/', function (req, res) { res.render('./index.html', {}); }); app.get('/game', function (req, res) { res.render('/views/index.html'); }); })(); 

我的主要app.js:

 var express = require('express'), app = require('express')(), cookieSession = require('cookie-session'), ejs = require('ejs'), path = require('path'), cookieParser = require('cookie-parser'), util = require('util'), port = process.env.PORT || 3000, auth = require('./middleware/auth.js'), user = require('./models/user.js'), formidable = require('formidable'); router = express.Router(); app.use(express.static(path.join(__dirname, 'public'))); app.set('views', __dirname + '/views'); app.engine('html', require('ejs').renderFile); app.set('view engine', 'html'); //won't import routes app.use(require('./routes')); module.exports = router; app.listen(port); 

您需要在导出function中返回应用程序

 module.exports = function (express) { var app = express.Router(); app.post('/', function (req, res) { var form = new formidable.IncomingForm(); form.parse(req, function (err, fields, files) { user.create(fields.username, fields.email, fields.password); }); res.render('./game/game.html', {}); }); app.get('/', function (req, res) { res.render('./index.html', {}); }); app.get('/game', function (req, res) { res.render('/views/index.html'); }); return app }; 

……

 app.use(require('./routes')(express)); 

您的路线需要成为Express Router的一个实例。

 var express = require('express'); var router = express.Router(); router.get('/', function(req, res, next) { res.send(req.headers); }); module.exports = router; 

现在在你的app.js你可以使用它们如下:

 app.use('/', require('./routes/index')); 

你的模块应该改变你的路由器( app ),或者创build自己的路由器并导出它。

解决scheme1

 module.exports = function(app) { app.post(...); app.get(...); } 

主应用

 require("./routes")(app) 

解决scheme2

 var app = express.Router(); app.post(...); app.get(...); module.exports = app; 

主应用

 app.use(require("./routes")) 

解决scheme2在我看来更好,因为它避免了突变。