2012-12-29 44 views
3

app.coffeeExpress中的手寫筆中間件不起作用?

stylus = require("stylus") 

... 
app.use stylus.middleware 
    debug: true 
    src: __dirname + "/stylus" 
    dest: __dirname + "/public/css" 
    compile: (src) -> 
     console.log(stylus(src)) 
     return stylus(src) 

我包括在該樣式layout.jade,如:

link(rel="stylesheet", href="/css/styles.css") 

但在Chrome網絡選項卡上,我看到取消的styles.css這是爲什麼?

當我直接將瀏覽器指向/css/styles.css,我得到

Cannot GET /css/styles.css

的哪些錯誤?我該如何解決?

回答

9

您是否已經正確配置了static中間件,並在中間件堆棧中的觸筆中間件之後進行了工作和定位?手寫筆中間件只是讀取.styl文件並編寫相應的.css文件,但它期望static中間件然後找到.css文件並提供它。

另請注意,您的srcdest文件層次結構應直接對應。我的意思是,即使計算所有中間目錄,如果列出一個目錄的遞歸內容(ls -R或類似),那麼唯一的區別應該是src包含.styl文件和dest包含完全相應的.css文件。例如,不要將/css前綴粘貼到一個上,而不要粘貼到另一個上。

+0

靜態中間件定義如下:'app.use(express.static(path。加入(__ dirname,「public」)))'。完整的'app.coffee':http://pastie.org/5595573 –

+0

刪除'app.router'行。您幾乎不需要手動更改'app.router'中間件的位置,而這樣做幾乎總是會導致這樣的問題。 –

+0

我嘗試刪除'app.router'行,但它仍然導致404 ...順便說一句,該行在默認的app.js中由快速CLI生成。我試着在文檔中查找,但無法找到'app.router'實際上也做了什麼。 –

3

最近,我遇到了同樣的問題,只要@PeterLyons答案是正確的,我發現後css目錄名稱添加額外的斜線也似乎來解決這個問題。

(不含咖啡)

var stylus = require('stylus'); 

app.configure(function() { 
    app.use(stylus.middleware({ 
     src: __dirname + '/stylus', 
     dest: __dirname + '/public/css/' // <-- additional slash after "css" 
    })); 
    app.use(express.static(__dirname + '/public')); 
}); 

不知道這是筆版本相關的問題,並沒有/是之前存在,但仍是相當混亂給我。

+0

這給我修好了。 –

+0

這個固定了我,雖然我不得不用'src'鍵值來做,因爲我沒有改變dest。 – olive

0

這已經快把我逼瘋了幾個小時,所以我想我會分享:)

我從/公共

爲我的外部文件,這樣我的樣式表在/公共/樣式。我所要做的就是將我的.styl文件放在我的項目根目錄下名爲/ styles的文件夾中。

modules.app.use(modules.stylus.middleware({ 
    debug: true, 
    src: __dirname + '/', 
    dest: __dirname + '/public/', 
    compile: compile 
})); 

我周圍的怪的路徑要求得到,因爲我總是會在/風格

GET /styles/website.css供應/風格/網站索要風格。STYL根/目錄中的項目

0

的這個工作對我

app.use(express.static('public')); 

//stylus 
function compile(str, path) { 
return stylus(str) 
.set('filename', path) 
} 

app.use(stylus.middleware(
{ src:'/public/css' 
, compile: compile 
} 
)); 

把你file.styl在public.css就會有太多編譯! 問題必須是src目錄,看起來你是指向模塊/手寫筆,在任何地方我都不是exprert,但是這種方式可以工作