我正在尝试设置一个 Node 项目,我想将文件 routes.js
放入 routes/routes.js
并将 Controller 文件放入 controllers/
目录。
所以,例如我有这样的 UserController
:
var index = () =>
{
console.log("User Index");
};
var getUser = (id) => {
console.log("User by id " + id);
};
module.exports =
{
index,
getUser
}
在 routes.js
中我有这个:
var express = require('express');
var routes = express.Router();
var users = require('../controllers/usersController');
routes.route('/')
.get(users.index);
routes.route('/user/:userId')
.get(users.getUser);
module.exports=
{
routes
};
在 index.js
中,我是这样设置的:
let express = require('express');
let app = express();
let routes = require('./routes/routes');
app.set("views", './views');
app.set("view engine", 'jade');
app.use(express.static(__dirname + '/public'));
app.use('/', routes.index);
// launch ======================================================================
app.listen(9001);
当我尝试运行服务器时出现此错误:
.../node_modules/express/lib/router/index.js:458
throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
^
TypeError: Router.use() requires a middleware function but got a undefined
有什么问题,我如何以这种方式配置设置?
谢谢
最佳答案
你的 userController 将是这样的。
module.exports = {
index: (req, res) => {
console.log("User Index");
},
getUser: (req, res) => {
console.log("User by id " + req.params.id);
}
}
你的路由文件将是这样的
var express = require('express');
var routes = express.Router();
var users = require('../controllers/usersController');
routes.get('/', user.index);
routes.get('/user/:userId', user.getUser);
module.exports = routes;
你的索引文件会是这样的
let express = require('express');
let app = express();
let routes = require('./routes/routes');
app.set("views", './views');
app.set("view engine", 'jade');
app.use(express.static(__dirname + '/public'));
app.use('/', routes);
app.listen(9001);
关于javascript - Express js - 在单独的文件中使用路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47034751/