2012-03-10 10 views
5

ho qualcosa sulla falsariga di quanto segue:NodeJS non serviranno i file statici, anche quando si utilizza 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'}); 
}); 

Eppure, quando visito /public/myfile.css per esempio, ho ancora ottenere:

non possono ottenere /public/myfile.css i miei modelli index.jade non riesco a chiamare i file sia

Perché è questo?

risposta

12

Non credo che fornire il percorso del genere è supportato:

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

Prova questa, e cercare i file pubblici nella radice:

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

Così /public/myfile.css diventa /myfile.css.

+0

, ma c'è un modo per forzare il bit/pubblico per lavorare ancora? La mia app usa qualunque cosa dopo il/come parametro per la rotta principale ... quindi, è bloccato in un loop al momento – Alex

+1

Quindi metti una directory 'public' nella tua directory' public', o monta i tuoi percorsi dopo statico. –

+20

Questa risposta è sbagliata. 'app.use ("/public ", express.static (__ dirname + '/ public'));' è supportato. Verifica la definizione dell'app.use: https://github.com/senchalabs/connect/blob/master/lib/proto.js#L61 Qualcos'altro era rotto. – ibash

1

Importante è anche dove la posizione della dichiarazione app.use(express.static(__dirname + '/public')) ...

Ho avuto un problema quando era né di funzionare quando ho accidentalmente messo questo in un file ./middle-conf.js che più tardi è stato importato come var configure = require('./middle-conf) e quindi l'app Express è stata passata a questo configure(app).

Quindi l'ordine di elaborazione middleware non funzionava correttamente.

0

questo funziona bene ...

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

e nelle vostre pagine html accedere in questo modo ..

<script src="/public/yourcodes.js"></script> 
Problemi correlati