我想要实现的是我的静态加载在/
上,api挂载在/api
这是我的主要文件:
var express = require('express');
var server = express();
var app = require('./api/app');
server.use(express.static('/', __dirname + '/public'));
server.use('/api', app(server));
server.listen(3000);
我的app.js文件:
module.exports = function(app) {
app.get('/users/:id', function(req, res, next){
res.json(req.params);
});
}
我收到Cannot read property 'handle' of undefined
错误。我仍然没有完全了解表达' use
并且我确定我犯了一个非常新手的错误,但我不确定如何配置以获得我想要的结果。
感谢。
答案 0 :(得分:0)
您应该使用路由器而不是Express 4.x:
// main.js
var express = require('express');
var server = express();
var api = require('./api/app');
server.use(express.static('/', __dirname + '/public'));
server.use('/api', api());
server.listen(3000);
// ./api/app.js
var router = require('express').Router();
module.exports = function() {
router.get('/users/:id', function(req, res, next){
res.json(req.params);
});
return router;
};
答案 1 :(得分:0)
use
期望得到一个中间件函数,但在这个例子中它实际上没有得到任何东西(注意app.js中没有return
值)。解决此问题的一种方法是返回快速“Router中间件:
var express = require('express');
module.exports = function(app) {
var apiRouter = express.Router();
apiRouter.get('/users/:id', function(req, res, next){
res.json(req.params);
});
return apiRouter;
};