2012-09-18 11 views
5

Sono sicuro che questa domanda è stata fatta un milione di volte ma non ho ancora trovato alcuna soluzione al seguente problema.iisnode ed express

Ho un'applicazione di base in esecuzione utilizzando nodejs ed express. Quando eseguo l'applicazione nel nodo, per impostazione predefinita mi invia al file index.html nella mia cartella pubblica. Anche se non ho impostato alcun percorso. Voglio che questo accada.

Ho installato iisnode e ho creato una nuova applicazione in "Sito Web predefinito" chiamato "Dispositivi". Ho messo la mia domanda lì invariata. Leggendo in giro ho bisogno di risolvere alcune cose con il web.config e ha deciso di andare con la configurazione menzionati qui (non il YAML):

http://tomasz.janczuk.org/2012/05/yaml-configuration-support-in-iisnode.html

Quando provo e caricare l'applicazione nel mio browser è cerca sempre di trovare il percorso nelle mie app.js e getta messaggi verso di me come ad esempio:

non possono ottenere/dispositivi/

sono davvero tirando fuori i miei capelli con questo e non so cosa fare! Devo impostare una route predefinita per il contenuto statico all'interno del mio punto di ingresso app.js? Ho il seguente al suo posto:

app.configure(function(){ 
    app.set('port', process.env.PORT || 3000); 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.favicon()); 
    app.use(express.logger('dev')); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.static(path.join(__dirname, 'public'))); 
}); 

Ma ancora non mi consegnare a index.html quando carico l'applicazione da esso è radice:

'http: // localhost/dispositivi /'

Chiunque può darmi una mano con questo?

+0

Ho risposto a questo su un altro thread. vedere la mia risposta su [here] (http://stackoverflow.com/a/31482232/2980607) – peteb

risposta

5

Il modo più semplice per risolvere questo problema è creare un sito Web IIS dedicato per l'applicazione anziché creare un'applicazione IIS all'interno di un sito Web IIS come è stato fatto.

Se si dispone di un sito Web dedicato per l'applicazione node.js in IIS, l'applicazione è accessibile alla radice dello spazio URL, ad es. http://myapp.com/, che è ciò che si aspetta la configurazione del percorso espresso di default. Al contrario, se si crea un'applicazione IIS all'interno di un sito Web IIS per ospitare l'applicazione node.js (ad esempio devices), è accessibile a un URL subordinato all'URL principale del sito Web, ad es. http://myapp.com/devices/. Il segmento del percorso URL extra (devices) è qualcosa che l'app Express non si aspetta e non è configurato per l'elaborazione e pertanto rifiuta la richiesta.

Se si richiede di ospitare l'applicazione node.js come applicazione IIS in IIS, sarà necessario aumentare la configurazione del percorso espresso per prevedere il segmento di percorso URL aggiuntivo corrispondente al nome dell'applicazione IIS.

+0

Non farò un downvote visto che almeno descrivi il problema, ma non lo inviterò perché per tutto questo non hai ancora fornire una soluzione In definitiva, le modifiche richieste (vedere la mia risposta sotto) servono a rendere l'app più solida in qualsiasi ambiente E a superare il problema imposto dalle directory virtuali in IIS. – rainabba

+0

L'ho upvoted perché isolando l'app nodo sul proprio sito Web dedicato fa meno confusione su ciò che la radice dello spazio dell'URL è – Alexander

Problemi correlati