2011-10-18 28 views
12

que tienen un público/directorio que he erigido como que contiene archivos estáticos en el expreso:Navegación árbol de directorios de archivos estáticos en Node.js/expresar

app.use(express.static(__dirname + '/public')); 

Tiene un directorio de imágenes en ella

/public/images 

Y que tiene un subárbol profundo de varias imágenes. Si introduzco la ruta completa a la imagen, se carga sin problemas.

http://mysite.com/images/tiles/grass.png 

Cuando acabo de ir a un enlace como

http://mysite.com/images/tiles/ 

Simplemente me da el error que se da cuando se trata de encontrar un camino no estático, pero no existe la ruta .

¿Cómo puedo hacer para que todos los directorios en mi ruta estática muestren algo similar a la forma en que Apache muestra la estructura de directorios navegables?

Respuesta

24

Porque lo que está solicitando al poner

http://mysite.com/images/tiles/ 

es una lista de directorios solicitud, y parece que estática middleware solo sirve archivos no directorios. Debe usar

app.use(express.directory(your_path)); 
app.use(express.static(your_path)); 

Esto le permitirá solicitar los URI de los que está hablando.

+0

funcionó muy bien, gracias! Esto no está en la guía expresa actual. También se requiere actualizar de 2.4.4 a 2.4.7 (para cualquier otra persona que tenga este problema) – RobKohr

+4

Si desea que use archivos index.html cuando se le da una ruta, coloque express.static antes de express.directory. Static cargará el archivo de índice para que la exploración del directorio no suceda cuando el archivo esté allí. – RobKohr

10

Por Express 4 esto parece un poco diferente:

var directory = require('serve-index'); 
app.use(directory(your_path)); 

Marque aquí para más detalles:

https://github.com/expressjs/serve-index

+0

¿Sirve también a los subdirectorios? – Dinoboff

+0

Sí, funciona para mí. –

+0

¿puedo ver el archivo también? –

Cuestiones relacionadas