2012-03-10 86 views
5

我沿着以下線的東西:會的NodeJS不提供靜態文件,使用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'}); 
}); 

然而,當我訪問例如/public/myfile.css,我還是得到:

不能得到/public/myfile.css 我index.jade模板似乎無法調用的文件或者

這是爲什麼?

回答

12

我不認爲像提供的路徑支持:

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

試試這個,看看你的公共文件根:

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

所以/public/myfile.css變得/myfile.css

+0

但有沒有辦法迫使/公共位仍然有效? 我的應用程序使用/ /後作爲主要路由參數... 所以,它暫時停留在一個循環 – Alex 2012-03-10 16:22:28

+1

因此,在你的'public'目錄中放置一個'public'目錄,或者安裝你的路由靜態之後。 – 2012-03-10 23:21:34

+20

這個答案是錯誤的。 'app.use(「/ public」,express.static(__ dirname +'/ public'));'支持。 結帳app.use定義: https://github.com/senchalabs/connect/blob/master/lib/proto.js#L61 其他東西被打破。 – ibash 2012-08-23 03:06:11

1

重要也是其中app.use(express.static(__dirname + '/public'))聲明的位置...

我有一個問題,當它也不工作時,我不小心把這個在./middle-conf.js文件,該文件後來被導入爲var configure = require('./middle-conf),然後將快速應用傳遞到configure(app)

因此,快遞中間件處理順序不正確。

0

這工作得很好...

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

,並在HTML頁面訪問這樣的..

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