无法导入我的路线模块
当我尝试使用app.use(require(./routes))
将我的路由模块导入到主应用中时,我得到app.use() requires middleware functions
。 我应该如何去module.exports
function,使其工作?
我的路线:
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在我看来更好,因为它避免了突变。
- 在Express中将节点env传递给layout.jade,而不显式定义路由
- 如何将数据从NodeJS发送到OpenOffice单词模板
- 用可变数据呈现HTML并将其转换为PDF
- 为什么bin / www命令不能在我的cloud9(c9)新的运行configuration中工作?
- Shopify应用程序开发与节点的任何教程或指南?
- 返回promise,而不是node.js中的res.json(data)
- 使用Passport.js将facebook数据链接到当前login的用户
- NodeJS Express – 单独处理404(Not Found)和405(Method Not Allowed)
- Node.js要求按预期工作