2012-03-10 6 views
5

tengo algo en la línea de lo siguiente:NodeJS no van a servir archivos estáticos, incluso cuando se utiliza express.static

var request = require('request'), 
    express = require('express'); 

var app = express.createServer(); 

var port = process.env.PORT || 8080; 

app.configure(function(){ 
    app.set("view options", { layout: false, pretty: true }); 
    app.use(express.favicon()); 
    app.use("/public", express.static(__dirname + '/public')); 
    } 
); 

app.listen(port); 

// Routes 
app.get('/', function(req, resp){ 
    resp.render('index.jade', {pageTitle: 'Some title'}); 
}); 

Sin embargo, cuando vuelva a /public/myfile.css por ejemplo, todavía obtener:

no puede conseguir /public/myfile.css Mis plantillas index.jade parece que no puede llamar a los archivos ya sea

¿Por qué es esto?

Respuesta

12

No creo que el suministro de la trayectoria de esa manera se apoya:

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

probar esto, y buscar los archivos públicos en la raíz:

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

Así /public/myfile.css convierte /myfile.css.

+0

Pero, ¿existe una manera de forzar el bit/público para seguir trabajando? Mi aplicación usa lo que sea después de/como parámetro para la ruta principal ... por lo tanto, está atorado en un bucle actualmente – Alex

+1

Ponga un directorio 'public' en su directorio' public', o monte sus rutas después de la estática –

+20

Esta respuesta es incorrecta. 'app.use ("/public ", express.static (__ dirname + '/ public'));' es compatible. Verifique la definición de la aplicación.use: https://github.com/senchalabs/connect/blob/master/lib/proto.js#L61 Algo más estaba roto. – ibash

1

Importante también es donde la posición de la declaración app.use(express.static(__dirname + '/public')) ...

que tenía un problema cuando era ni trabajan cuando accidentalmente he puesto esto en un archivo que posteriormente fue ./middle-conf.js importado como var configure = require('./middle-conf) y luego la aplicación exprés pasó a este configure(app).

Por lo tanto, la orden de procesamiento de medios intermedios no funcionaba correctamente.

0

esto funciona bien ...

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

y en sus páginas html acceder a ella como esta ..

<script src="/public/yourcodes.js"></script> 
Cuestiones relacionadas