快速中间件问题

时间:2017-01-20 18:54:09

标签: node.js express

在routes / index.js上,如果我离开module.exports = routes,它可以正常工作; 但是,如果我将其更改为以下以允许多个文件,那么我会收到中间件错误:

-i /--in-place
module.exports = {
    routes
};

//路由/ index.js

var app = express();
const routes = require('./routes');
const port = process.env.PORT || 3000;

app.use(bodyParser.json());
app.use('/', routes);



app.get('/', (req, res) => {
    res.send('Please visit: http://domain.com');
    }, (err) => {
    res.send(err);
});

// routes / Main Routes.js

const routes = require('./MainRoutes');
module.exports = routes;

错误是:Router.use()需要中间件功能但是得到了一个' + gettype(fn));

2 个答案:

答案 0 :(得分:0)

routes/index.js修改为:

const routes = require('express').Router();

routes.use('/main', require('./MainRoutes'));

// Put other route paths here
// eg. routes.use('/other', require('./OtherRoutes'))

module.exports = routes;

Main Routes.js修改为:

const routes = require('express').Router();

routes.post('/', (res, req) => {
   // route controller code here
});

module.exports = routes;

希望这会对你有所帮助。

答案 1 :(得分:0)

MainRoutes.js导出快速路由器对象,如果你做

,中间件就会理解
module.exports = routes; // routes/index.js

然而,当你这样做时

module.exports = {
    routes
};

您现在将该路由器对象嵌套在另一个对象中,中间件无法理解。

在您的主服务器文件中,您可以

const {routes} = require('./routes');

正确获取路由器对象。