Node.js express.Router()正在返回未定义的
我正在尝试设置一个在node.js HTTP服务器上运行的rest API。对于常规调用,我希望路径为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
/…
,对于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"
}