2012-09-18 48 views
5

Estoy seguro de que esta pregunta se ha formulado un millón de veces, pero todavía no he encontrado ninguna solución al siguiente problema.iisnode y express

Tengo una aplicación básica ejecutándose usando nodejs y express. Cuando ejecuto la aplicación en el nodo, de manera predeterminada me envía a index.html en mi carpeta pública. Incluso si no tengo ninguna ruta configurada. Quiero que esto suceda.

He instalado iisnode y he creado una nueva aplicación en 'Sitio web predeterminado' llamado 'Dispositivos'. Puse mi aplicación allí sin cambios. La lectura de alrededor de lo que necesitaba para ordenar algunas cosas con el web.config y decidió ir con la configuración mencionada aquí (no el yaml):

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

Cuando trato y la carga de la aplicación en mi navegador se siempre trata de encontrar la ruta en mis app.js y lanza mensajes a mí como:

no puede conseguir/dispositivos/

realmente estoy tirando de mi pelo con éste y no sé qué ¡que hacer! ¿Debo configurar una ruta predeterminada para el contenido estático dentro del punto de entrada de mi app.js? Tengo el siguiente en su lugar:

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'))); 
}); 

Pero todavía no me entregara a index.html cuando cargo la aplicación desde su raíz:

'http: // localhost/dispositivos /'

¿Alguien puede ayudarme con esto?

+0

He respondido esto en otro hilo. ver mi respuesta en [aquí] (http://stackoverflow.com/a/31482232/2980607) – peteb

Respuesta

5

La manera más fácil de solucionar este problema es crear un sitio web de IIS dedicado para su aplicación en lugar de crear una aplicación de IIS en un sitio web de IIS como lo hizo.

Si tiene un sitio web dedicado para su aplicación node.js en IIS, se puede acceder a la aplicación en la raíz del espacio URL, p. http://myapp.com/, que es lo que espera la configuración de ruta rápida predeterminada. Por el contrario, si crea una aplicación IIS dentro de un sitio web de IIS para alojar su aplicación node.js (digamos devices), se puede acceder a ella en una URL subordinada a la URL raíz del sitio web, p. http://myapp.com/devices/. El segmento de ruta URL adicional (devices) es algo que su aplicación expresa no espera y no está configurada para procesar, y por lo tanto rechaza la solicitud.

Si insiste en alojar la aplicación node.js como una aplicación IIS en IIS, deberá aumentar su configuración de ruta exprés para esperar el segmento de ruta URL adicional que coincida con el nombre de la aplicación IIS.

+0

No voy a menospreciar ya que al menos se describe el problema, pero no votaré porque, a pesar de todo, aún no lo hiciste proporcionar una solución En última instancia, los cambios necesarios (consulte mi respuesta a continuación) sirven para hacer que la aplicación sea más robusta en cualquier entorno Y superar el problema impuesto por los directorios virtuales en IIS. – rainabba

+0

Te he subido de categoría porque al aislar la aplicación de nodo en su propio sitio web dedicado, se crea menos confusión en cuanto a cuál es la raíz del espacio de la url. – Alexander