【问题标题】:ERROR app.use() requires middleware functions: (so how to set router for app.use in express node.js)?错误 app.use() 需要中间件功能:(那么如何在 express node.js 中为 app.use 设置路由器)?
【发布时间】:2016-08-04 18:26:41
【问题描述】:

基本上我只是想在 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')
})

路由器.js

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


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

当我使用 app.use([CvRouter]) 时,这最后一个文件 router.js 基本上会产生错误 错误是:throw new TypeError('app.use() requires middleware functions');

我该如何解决?我也知道它的路由器返回对象。和 app.use 参数中的期望函数。但是我如何才能实现我想要的 node.js 的 MVC 模式?

【问题讨论】:

  • 这可能只是复制时的拼写错误,但第二个文件包含module.export 而不是module.exports,这使得CvRouter 未定义...
  • 感谢@oshnaps 它的错字。请正确回答,以便我给你加分。我的问题已经解决了。
  • 刚做了,谢谢!

标签: node.js express routes


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    杀死数组字面量

    var CvRouter = require('./routes/cv')
    
    module.exports = function(app) {
        app.use(CvRouter);
    };
    

    【讨论】:

      猜你喜欢
      • 2015-10-08
      • 2015-01-20
      • 2019-11-14
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 2017-11-16
      相关资源
      最近更新 更多