2015-06-12 7 views
6

Uso express 'Router su un'applicazione Web. sto aggiungendo i router solito modo:Come conoscere il percorso di montaggio del router su espresso?

app.use(router, '/myroutehere/'); 

I gestori per ogni router non hanno alcuna idea di dove sono stati "montati" (file diversi, diverse preoccupazioni, ecc). Questo ha funzionato fino ad ora che ho bisogno di creare un ToC per uno dei router (e il contenuto è generato dinamicamente). Sto utilizzando url.resolve per gestire i percorsi relativi, ma mi manca la parte iniziale dell'URL (altrimenti i collegamenti verranno risolti a / anziché /myrouter/).

C'è un modo per conoscere il percorso di montaggio di un router senza codificarlo in diversi punti?

router.get('/', function(req, res){ 
    // Need to know the mount path here or a way to resolve relative links 
    // to the mount path and make them absolute to the app 
}); 

risposta

5

E a proposito di "router.mountpath"?

http://expressjs.com/api.html#app.mountpath

Upd. Ok, è necessario: <req.route.path>, <req.baseUrl>, <req.originalUrl>

+0

Che sembra funzionare solo con le applicazioni espressi e non l'oggetto Router :(sto ottenendo indefinita questo momento, ma passerà in rassegna il mio codice di nuovo solo nel caso in cui –

+1

Ok, è necessario:. ' , , ' –

+1

req.baseUrl sembra essere quello giusto anche se manca il finale/nel mio caso. Puoi aggiornare la tua risposta in modo che io possa contrassegnarla come valido? Grazie mille! –