2015-04-06 85 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] - 保存