在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));
答案 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');
正确获取路由器对象。