2016-04-05 86 views
0

我有一個運行Express.io的服務器,它工作正常,但是我的Javascript文件無法正常加載。Express.io不加載Javascript文件

我有一個玉文件,它看起來像這樣:

html 
    head 
     h1 Test index 
    body 
     script(src="/socket.io/socket.io.js") 
     script(src="/javascripts/inHTML.js") 

和Coffescript文件,該文件是這樣的:

express = require('express.io') 
app = express() 
r = require('rethinkdb') 

app.get '/', (req, res) -> 
    res.render '../../client.jade' 

玉文件不加載和script(src="/socket.io/socket.io.js")正確加載爲好,然而,當我使用Chrome瀏覽器檢查網站時,第二個<script>標記會返回GET錯誤。我嘗試了多種方式使它工作,但不幸沒有成功。我沒有看到爲什麼script(src="/socket.io/socket.io.js")確實會加載,而我的其他script沒有。

我的項目是這樣的:網站是主要的目錄,其中包含

  • coffeescripts(文件夾)
  • Java腳本(文件夾 - 具有app.js和inHTML.js)
  • 數據(文件夾)
  • node_modules(文件夾 - 具有/socket.io/socket.io.js)
  • 的package.json(文件)
  • client.jade(文件)

當我console.log __dirname是打印website/javascripts

我也試過app.use express.static('../' + __dirname)或任何類似的,也沒有成功。

編輯: 我試圖做Express.io Routing Example,但我想在單獨的.js文件的Javascript。

+0

缺少太多信息來調試您的案例。爲什麼'/ socket.io'正確映射而'/ javascripts'不是?還定義了哪些進一步的路由和中間件?檢查路由/中間件定義的排序對於某些意外路由可能與您希望匹配的路由/ javascripts匹配。 – cepharum

+0

1.您現在如何提供文件? (您是否使用express.static?) 2. socket.io位於何處? 3。做到這一點(很容易)的正確方法是使用express.static作爲「public」文件夾,並在其中放入您想要提供的所有內容;例如javascripts –

+0

感謝您的評論。對於爲什麼'/ socket.io/socket.io.js /'工作正常,我完全無能爲力。我將用更多信息編輯我的問題。 – user3208216

回答

0

如果我正確地理解了你,你已經在執行腳本app.js所在的目錄下有HTML inHTML.js文件。 __dirname是當前正在執行的腳本所在目錄的名稱。這就是爲什麼當您登錄__dirname時控制檯記錄日誌website/javascripts

所以基本上,這意味着你會寫app.use(express.static(__dirname + '/'))script(src="inHTML.js")。或者,也許你可以寫app.use(express.static('../'));script(src="javascripts/inHTML.js")

最合乎邏輯的事情,我會建議,另一方面是放置您的執行腳本,再次我假設是app.js,在根目錄和將要用作靜態文件的所有文件放在同一個子文件夾中。這樣你可以說app.use(express.static(__dirname + '/nameOfSubfolder'));。並且由於它們都具有相同的起點,因此您的靜態文件的路徑將更加合理。