发现express4.x里routes(app)不能用了?
发布于 10 年前 作者 oceansblue 7717 次浏览 最后一次编辑是 8 年前

我用的express是4.2.0 启动app.js 他官方的例子是(可以运行): <code> var routes = require(’./routes/index’); var app = express(); app.use(’/’, routes); </code> 我修改后: <code> var routes = require(’./routes’); var app = express(); routes(app); </code> 如果按官方这样写,如果文件很多的时候,app.js不是变得很臃肿吗? 我执行<code>node app.js</code>直接报错"TypeError: Cannot call method ‘toLowerCase’ of undefined"

4 回复

官方写法不臃肿啊,现在讲router这个中间件独立出来后,好用多了,而且这种写法app.js不会臃肿啊。具体可以阅读: http://lostjs.com/2014/04/24/router-in-express-4/

然后,话说,你修改后的代码是有误的吧。补充一句,现在express4.x的启动方式不是node app.js了,是npm start,或者可以说等于是node ./bin/www

应该是 var routes = require(’./routes/index’); var app = express(); app.use(routes);//把routes对象传给express 然后在index.js中有 var express=require(‘express’); var routes=express.Router();//从express中取出routes对象 routes.get(’/’,function(req,res){ });

哦,明白了,感谢@hzbqjltx的回答!!

官方的只是个例子,其实有多种解决办法: 1)模块方法,简单易用 2)express-namespace等开源模块管理

回到顶部