Node.js express.Router()正在返回未定义的

Node.js express.Router()正在返回未定义的,node.js,express,Node.js,Express,我正在尝试设置一个在node.js HTTP服务器上运行的rest API。对于常规调用,我希望路径为/…,对于API调用,我希望使用/API/… 从我从各种网页上收集到的信息,包括,我需要的是这样的东西: var express = require('express'); var app = express(); var router = express.Router(); /* set up app ... */ router.route('/some/url').get(...).pu

我正在尝试设置一个在node.js HTTP服务器上运行的rest API。对于常规调用,我希望路径为
/…
,对于API调用,我希望使用
/API/…

从我从各种网页上收集到的信息,包括,我需要的是这样的东西:

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=…
)总是返回
未定义的
。当我调试时,我可以清楚地看到
express.Router()
是一个没有返回语句的函数,但确实包含了一堆
this.foo
setter。这让我觉得我应该调用
var router=new express.router()
,但我找不到任何支持该声明的文档

关于哪里出了问题的想法

我的
包.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"
  }

升级您的Express JS包可能会有所帮助

npm install express@4.13.4 -g


您必须将express更新或迁移到4.#。您使用的是旧版本,版本3.x和2.x已弃用。这里有一个链接。您也可以使用此命令:

获取最新版本

npm安装express--保存

要获得版本4.13.4

npm安装express@4.13.4--保存


express.Router
was(vs.
^3.4.4
)。如果该函数在Express 3.x中可用,那么它是由另一个模块定义的扩展。我认为您使用的Express版本太旧了。您可以尝试使用express 4.x。或者只需提及
*
并在您当地的nom_模块包中重新安装npm包。是的,我将包更新为当前版本,并修改了我的app.js。我还需要做更多的工作使它正常工作,但是
.Router()
现在可以工作了。谢谢@JonathanLonowski您可能希望添加该选项作为答案,以便OP可以为您提供正确答案。
npm install express@4.13.4 --save-dev
//Edit your pakage.json
"dependencies": {
    "express": "~4.13.4"
}