2012-03-14 16 views
5

Chcę przekazać środowisko dla Express do modułu routingu dla Express. Chcę wyłączyć, czy Express działa w trybie deweloperskim lub produkcyjnym. Aby to zrobić, zgaduję, że muszę jakoś przekazać app.settings.env do modułu routingu.Przekazywanie wartości do modułu węzła js dla tras ekspresowych

Mój moduł trasowania eksportuje funkcję dla każdej trasy. Więc:

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

Na podstawie poprzedniej stackoverflow post, próbowałem to:

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

Ale węzeł zgłasza błąd typu (obiekt nie jest funkcją).

Jestem nowy w Node i Express. Czy mogę przekazać wartość do ekspresowej trasy, a jeśli tak, to w jaki sposób?

Odpowiedz

8

Jeśli web.js wygląda następująco:

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

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

następnie wywołując

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

próbie użycia obiektu (module.exports) jako funkcji. Wpisz tutaj błąd.

Musisz przekonwertować moduł.exports na funkcję, aby przekazać do niego parametry. W ten sposób:

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

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

Dzięki. To działa. –

+0

to rozwiązanie uratowało mój dzień –

Powiązane problemy