2014-05-18 34 views
1

我所试图实现的是对/加载我的静,与API安装在/apiExpressjs安装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

您应该使用路由器,而不是快递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; 
}; 
0

use预计将收到一个中间件的功能,但在这个例子中实际上没有得到任何东西(请注意,有一个在应用程序没有return值。 JS)。解决此问题的一种方法是返回快件'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; 
}; 
相关问题