2012-01-24 157 views
14

我開始嘗試使用nodejs/expressjs/coffeescript和jade視圖引擎。爲什麼我無法從Expressjs/Nodejs獲得我的JavaScript文件?

我有以下的設置,從我可以看到周圍的例子看起來很標準。

app = express.createServer().listen process.env.PORT 

    app.configure -> 
     app.set 'views', __dirname + '/views' 
     app.set 'view engine', 'jade' 
     app.set 'view options', layout: true 
     app.use express.bodyParser() 
     app.use express.static(__dirname + '/public') 
     app.use app.router 


    app.get '/ekmHoliCal/index', (req, res) -> 
     res.render 'index' 

我的目錄結構如下:

-- ekmHoliCal 
    -- public 
    --javascripts 
      client.js 
    -- views 
     index.jade 
     layout.jade 

索引文件包含什麼,但行: 這是索引文件

的layout.jade文件包含:

!!! 5 
html(lang="en") 
    head 
     title Users 
     script(type="text/javascript", src="http://code.jquery.com/jquery-1.6.4.js") 
     script(type="text/javascript", src="/ekmholical/javascripts/client.js") 
    body 
     div!= body 

當我導航到本地主機/ ekmHoliCal /索引時,我按照預期得到索引頁面。但是,如果我查看源代碼我看到一個鏈接到jQuery的:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.js"> 

,如果我點擊該鏈接果然我看到了jQuery文件的來源。

索引文件源還包含一個鏈接到我的client.js文件,如下所示:

<script type="text/javascript" src="/ekmholical/javascripts/simon.js"></script> 

,但是當我點擊我得到

不能得到/ ekmholical/Java腳本/客戶端。 JS

我見過此相關的問題(Express-js can't GET my static files, why?),並不能看到我在做什麼錯

回答

22

您的腳本標記有錯誤的路徑。它應該是

<script type="text/javascript" src="/javascripts/simon.js"></script> 

快遞,你設置以下內容:

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

這告訴表達了public目錄應Web根ACT /節點。它的所有內容都可以通過/來引用,所以如果你還有一個CSS文件夾,你可以使用/css/styles.css

+0

感謝保羅。我已經嘗試過你的建議沒有成功。這就是說,你的答案是正確的。我否定提到的是,我在IIS下的windows上運行它,它似乎是我在IIS下導致該問題的網站配置。 –

1

跟隨Paul Armstrong的說法,你也可以這樣做。

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

這將允許您引用您的js文件是這樣的:

<script src="/public/javascripts/simon.js"></script> 
相關問題