【发布时间】:2013-08-30 20:07:29
【问题描述】:
我正在使用“express-namespace”对我的路由进行分类。 这是我的代码。
..
9 var controllers = require('./controllers');
10 require('express-namespace');
..
46
47 app.namespace('/json', function(){
48 app.post('/', function(req, res, next){
49 res.header('Content-Type', 'application/json');
50 next();
51 });
52 /**
53 * Map the controller objects and its actions
54 * to the corresponding URL in lower case
55 */
56 for(var controller in controllers){
57 app.namespace('/' + controller.toLowerCase(), function(){
58 controller = controllers[controller];
59 for(var action in controller){
60 app.post('/' + action.toLowerCase(), function(req,res){
61 action = controller[action];
62 action(req, function(result){
63 res.send(result);
64 });
65 });
66 }
67 });
68 }
69 });
这是我的 ./controllers.js 代码:
...
4 var Users = {
5 };
6
7 Users.create = function(req, result){
...
22 }
23
24 exports.Users = Users;
25
我的意思是将我的控制器代码移动到单个 .js 文件中并映射 我所有的控制器都变成了相应的小写 URL,所以我的应用是 很整洁。
每次我运行 'node 应用程序.js'。 如果我第二次 POST 到 URL,会出现以下异常 发生:
TypeError: undefined is not a function
at CALL_NON_FUNCTION (native)
at /home/carl/source/node/funner/app.js:62:21
at callbacks (/usr/local/lib/node/.npm/express/2.4.6/package/lib/router/index.js:272:11)
at param (/usr/local/lib/node/.npm/express/2.4.6/package/lib/router/index.js:246:11)
at pass (/usr/local/lib/node/.npm/express/2.4.6/package/lib/router/index.js:253:5)
at Router._dispatch (/usr/local/lib/node/.npm/express/2.4.6/package/lib/router/index.js:280:4)
at Object.handle (/usr/local/lib/node/.npm/express/2.4.6/package/lib/router/index.js:45:10)
at next (/usr/local/lib/node/.npm/connect/1.7.0/package/lib/http.js:201:15)
at /usr/local/lib/node/.npm/connect/1.7.0/package/lib/middleware/session.js:323:9
at /usr/local/lib/node/.npm/connect/1.7.0/package/lib/middleware/session.js:342:9
有人可以在这里给我提示吗?
【问题讨论】: