2012-03-14 26 views
5

Tôi muốn chuyển môi trường Express cho mô-đun định tuyến cho Express. Tôi muốn tắt cho dù Express đang chạy trong chế độ phát triển hoặc sản xuất. Để làm như vậy, tôi đoán tôi cần phải vượt qua app.settings.env bằng cách nào đó để mô-đun định tuyến.Truyền giá trị cho mô-đun nút js cho các tuyến đường Tốc hành

Mô-đun định tuyến của tôi xuất một chức năng cho mỗi tuyến đường. Vì vậy:

app.get('/search', web.search); 

Dựa trên một bài đăng stackoverflow trước, tôi đã cố gắng này:

var web = require('./web')({'mode': app.settings.env}); 

Nhưng nút ném một lỗi loại (object không phải là một chức năng).

Tôi mới sử dụng Node và Express. Tôi có thể chuyển một giá trị cho một tuyến đường tốc hành và nếu có, làm thế nào?

Trả lời

8

Nếu bạn web.js trông như thế này:

module.exports.search = function(req, res, next) { 
    // ... 
}; 

module.exports.somethingOther = function(req, res, next) { 
    // ... 
}; 

sau đó bằng cách gọi

var web = require('./web')({'mode': app.settings.env}); 

bạn cố gắng sử dụng đối tượng (module.exports) như chức năng. Nhập lỗi tại đây.

Bạn cần chuyển đổi mô-đun.exports thành chức năng chuyển các tham số cho nó. Như thế này:

module.exports = function (env) { 
    return { 
     // env available here 
     search: function(req, res, next) { 
      // ... 
     }, 

     somethingOther: function(req, res, next) { 
      // ... 
     }; 
    }; 
}; 
+0

Cảm ơn. Những công việc này. –

+0

giải pháp này đã lưu ngày của tôi –

Các vấn đề liên quan