2012-03-14 13 views
5

Desidero passare l'ambiente Express a un modulo di instradamento per Express. Voglio decidere se Express è in esecuzione in modalità sviluppo o produzione. Per fare ciò, suppongo di dover passare app.settings.env in qualche modo a un modulo di routing.Passaggio di un valore a un nodo Modulo js per route Express

Il mio modulo di routing esporta una funzione per ogni percorso. Quindi:

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

Sulla base di un post StackOverflow precedente, Ho provato questo:

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

Ma nodo getta un errore di tipo (oggetto non è una funzione).

Sono nuovo di Node ed Express. Posso passare un valore a un percorso espresso e, in caso affermativo, come?

risposta

8

Se web.js assomiglia a questo:

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

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

poi chiamando

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

si tenta di utilizzare oggetti (module.exports) come la funzione. Digita l'errore qui.

È necessario convertire module.exports in funzione per passare i parametri ad esso. Come questo:

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

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

Grazie. Questo funziona. –

+0

questa soluzione mi ha salvato la giornata –

Problemi correlati