当我尝试用app.use(require(./routes))将我的路由模块导入主应用程序时,我得到了app.use() requires middleware functions。我应该如何使用module.exports函数来使其工作?
我的路线:
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);发布于 2016-06-06 15:49:39
您需要在导出函数中返回应用程序
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));发布于 2016-06-06 15:51:15
你的路线需要成为特快路由器的一个实例。
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'));发布于 2016-06-06 15:53:15
您的模块应该改变路由器(app),或者创建自己的路由器并导出它。
解决方案1
模块
module.exports = function(app) {
app.post(...);
app.get(...);
}主应用程序
require("./routes")(app)解决方案2
模块
var app = express.Router();
app.post(...);
app.get(...);
module.exports = app;主应用程序
app.use(require("./routes"))在我看来,解决方案2更好,因为它避免了变异。
https://stackoverflow.com/questions/37661598
复制相似问题