CNode

发现express4.x里routes(app)不能用了?

Ooceansblue发布于12 年前最后回复12 年前4 回复8195 浏览0 收藏

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

查看回复

回复 (4)

N
nodejs2015#1·12 年前

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

I
icarusysuper#2·12 年前

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

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

Y
yuedun#3·12 年前

应该是 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){ });

O
oceansblue#4·12 年前

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

参与回复
登录后即可参与回复。登录