2015-04-06 110 views
3

我試圖設置一個運行在我的node.js HTTP服務器上的rest API。對於常規呼叫,我希望路徑爲/...,對於API調用,我想使用/API/...express.Router()返回undefined

從我可以從不同的網頁,包括http://expressjs.com/guide/routing.html,我需要收集是這樣的:

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

/* set up app ... */ 

router.route('/some/url').get(...).put(...); 
app.use('/API', router); 

出於某種原因,但是,第三行(var router = ...總是回報undefined。當我調試時,我可以清楚地看到,express.Router()是一個沒有return語句的函數,但包含一堆this.foo設置器。這讓我覺得我應該打電話var router = new express.Router(),但我找不到任何文檔來支持該聲明。

想法出了什麼問題?在我packages.json文件

我的項目依賴關係:

"dependencies": { 
    "body-parser": "^1.12.2", 
    "express": "^3.4.4", 
    "express-react-views": "^0.7.1", 
    "fluxxor": "^1.5.2", 
    "mongoose": "^4.0.1", 
    "react": "^0.12.2" 
    } 
+3

'express.Router' [與Express 4.0一起推出](https://github.com/strongloop/express/wiki/New-features-in-4.x)(vs. '^ 3.4.4')。如果該功能在Express 3.x中完全可用,則它是由另一個模塊定義的擴展。 – 2015-04-06 03:56:48

+1

我認爲你使用的是舊版本的express。你用express 4.x來試試。或者只是提到'*',然後將npm包安裝在本地的nom_modules包中。 – NarendraSoni 2015-04-06 03:58:23

+0

是的,我更新了我的軟件包到當前版本,並修改了我的app.js.我將不得不做更多的工作,但是'.Router()'現在可以工作。謝謝! – dfoverdx 2015-04-06 04:06:28

回答

4

升級您的快速JS包可以幫助

npm install [email protected] -g 

OR

npm install [email protected] --save-dev 

OR

//Edit your pakage.json 
"dependencies": { 
    "express": "~4.13.4" 
} 
0

您必須將您的快遞更新或遷移到4。#。#。毫無疑問,您使用的是舊版本,版本3.x和2,x已被棄用。這是migration的鏈接。你也可以使用這個命令對應:

得到最後版本

故宮安裝快車--save

獲得版本4.13.4

npm install [email protected] - 保存