2016-07-01 80 views
0

如果直接添加到我的server.js文件端點正常工作:Express端點沒有得到所謂的

app.post('/test', function(req,res) { 
    res.status(200).send({"message" : "OK"}); 
}); 

,但在試圖重構應用程序,我有一個從server.js稱爲api.js像這樣的文件:

var routesApi = require('./server/routes/api'); 
app.use('/v1', routesApi); 

,它看起來像這樣:

var express = require('express'); 
var router = express.Router(); 

module.exports = function() { 
    router.post('/test', function(req, res){ 
    res.status(200).send({"message" : "OK"}); 
    }); 

    return router; 
} 

但是如果我嘗試點擊這個終點,請求「失速」,因爲沒有響應。我究竟做錯了什麼?

回答

-1

你必須定義全局變量的應用程序,並可以使用這樣的:

api.js

exports.allRoutes=function() { 

var version1="v1"; 

app.post('/'+version1+'/test', function(req, res){ 
res.status(200).send({"message" : "OK"}); 
}); 

} 

app.js

global.app = express(); 

var all_routes = require('./server/routes/api'); 

all_routes.allRoutes(); 

var server = http.createServer(app); 

server.listen(app.get('port'), function(req,res){   
    console.log('Express server listening on port ' + app.get('port'));  
}); 
+0

我不確定全局變量是答案! – tommyd456

0

因爲你以前的方式移植你的路由器,當你通過.use()將它添加到中間件堆棧時,你需要調用routesApi。這是怎麼可能看起來像

app.use('/v1', routesApi()); 

雖然你可以完全避免這個改變你的api.js看起來像這樣:

var express = require('express'); 
var router = express.Router(); 

router.post('/test', function(req, res){ 
    res.status(200).send({"message" : "OK"}); 
}); 

module.exports = router; 

和服務器的代碼可以保持不變,因爲現在,您正在導出路由器模塊的一個實例。