ERROR app.use()需要中间件函数:(那么如何在express node.js中为app.use设置路由器)?

时间:2016-08-04 18:26:42

标签: node.js express routes

基本上我只是尝试在node.js应用程序中分离路由,模型和控制器。 我有以下文件来设置非常基本的node.js应用程序。

控制器/ cv.js

module.exports = {

   get: function(req, res, next){
        console.log("GET REQUESTS")
        next();
    }
}

路由/ cv.js

var express = require('express');
var CvRouter = express.Router();
var CvController = require('../controller/cv')


CvRouter.get('/', function(req, res, next){
        console.log("GET REQUESTS")
        next();
    })

module.export = CvRouter

app.js

const express = require('express');
const bodyParser= require('body-parser')
var path = require('path')

const app = express();

app.use(bodyParser.urlencoded({extended: true}))
app.use(bodyParser.json())

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



app.listen(3000, function() {
  console.log('listening on 3000')
})

router.js

var CvRouter = require('./routes/cv')


module.exports = function(app) {
    app.use([CvRouter]);
};

Basicaly这个最后一个文件router.js在我使用app.use([CvRouter])时会产生错误 错误是:抛出新的TypeError('app.use()需要中间件函数');

我怎么解决它?我也知道它的路由器的返回对象。和app.use期望参数中的函数。但我怎么能达到我想要的node.js的MVC模式?

2 个答案:

答案 0 :(得分:2)

正如评论中所述 - 你有一个错字。 文件routes/cv.js包含module.export而不是module.exports,这使得CvRouter未定义。

答案 1 :(得分:0)

杀死数组文字

var CvRouter = require('./routes/cv')

module.exports = function(app) {
    app.use(CvRouter);
};