2012-07-27 38 views
0

編輯爲ilollar答案(同樣的問題) 不顯示我有app.coffee:靜態CSS快遞玉

pp.configure -> 
    publicDir = "#{__dirname}/public" 

app.set "views", viewsDir 
app.set "view engine", "jade" 

app.use(stylus.middleware debug: true, src: viewsDir, dest: publicDir, compile: compileMethod) 
app.use(express.static(publicDir)) 

compileMethod = (str, path) -> 
    stylus(str) 
    .set('filename', path) 
    .set('compress', true) 


app.get "/pag",(req,res) -> 
    res.render "pag", 
    title: "test", 

在/stylesheet/pag.jade:

... 
link(rel='stylesheet', href='pag/css/bootstrap.min.css') 
... 

時,即時通訊去「myserver:9090/pag」頁面不加載bootstrap.min.css。 我收到以下錯誤:

source :(my folder of proyects)/views/pag/css/bootstrap.min.styl 
dest : (my folder of proyects)/public/pag/css/bootstrap.min.css 
read : (my folder of proyects)/views/pag/css/bootstrap.min.styl 
Error: ENOENT, open '(my folder)/views/pag/css/bootstrap.min.styl' 

我在哪裏錯了?我可能錯過了什麼..任何想法?

回答

7

首先,如果您還沒有建立ExpressJS爲靜態文件,你要做到這一點:

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

然後,從樣式表調用刪除「公」:

link(rel='stylesheet', href='/pag/css/bootstrap.min.css')

你設置的「公共」的應用程序根目錄靜態文件正在從提供服務,所以沒有必要指定你的電話「公開」 - 「公」是現在的根。

更新:
你是什麼viewsDir設置爲?由於您已將Stylus中間件的源設置爲該目錄,因此它正在查找要呈現的styl

您將「public」設置爲目標目錄 - 如果您在調用中包含「public」,它只會在公共目錄下創建另一個公共目錄,這不是您想要的。

嘗試重新組織該項目的樣式表是這樣的:

/stylesheets 
    /pag 
    /css 
     bootstrap.min.styl 

然後中間件改成這樣:

app.use(stylus.middleware debug:true, src:'/stylesheets', dest: publicDir, compile: compileMethod)

+0

不工作:(我更新了新的錯誤 – emilianox 2012-07-27 17:35:40

+0

代碼 – redhotvengeance 2012-07-27 17:42:24

+0

mi-view dir is: 'viewsDir =「#{__ dirname}/views」' – emilianox 2012-07-27 17:50:26