2016-07-24 96 views
0

我正在嘗試構建我的第一個節點應用程序,並且遇到了JavaScript文件的問題,但不是我的CSS,所以我非常困惑。這裏是我的app.js:節點靜態js文件不刷新

var express = require("express"); 
var app = express(); 
app.set("view engine", "ejs"); 
app.use(express.static(__dirname + '/public')); 

,直到我說4號線,在那裏我在Chrome控制檯「連接」,這是從我的js文件看見我無法載入我的js文件。我遇到的問題是,因爲我添加了第4行,express.static,我的js文件沒有更改,我在文件中添加的所有內容都未顯示在chrome資源選項卡中。奇怪的是,我的CSS文件工作正常,所以我有點難倒。

我試圖鏈接到js文件,如:

<script src="javascripts/main.js"></script> 

我真的不知道爲什麼它不能正常工作,我試圖重新啓動服務器,自還沒有任何工作安裝nodemon有。我的文件夾結構是

app.js 
public 
    stylesheets 
     main.css 
    javascripts 
     main.js 

我已經看過了這個問題,只發現人沒有連接到靜態文件,不是一次連他們也無法顯示任何保存的更改

+0

你可以嘗試用 ? – Alburkerk

回答

2

我想你必須在瀏覽器中禁用緩存。由於瀏覽器認爲該文件不是舊的從服務器刷新並使用緩存文件。
對於Chrome - 通過F12(也在其他瀏覽器作品中)打開控制檯並檢查它。

enter image description here

+0

嗨艾康,我檢查了網絡選項卡,它已被取消選中 – jSutcliffe90

+0

您必須檢查它。它被拒絕使用本地緩存瀏覽器。 –

+0

它仍然無法正常工作 – jSutcliffe90

0

嘗試使用絕對路徑,以確保靜態資產被正確加載。使用相對路徑(例如javascripts/main.js)可能會有問題,因爲瀏覽器將它們轉換爲絕對路徑的方式(它考慮了完整的url,包括任何嵌套的路徑)。

例如,如果您有路線/foo/bar設置,並且您使用的是相對路徑,那麼當您在瀏覽器中訪問/foo/bar時,瀏覽器將嘗試訪問/foo/bar/javascripts/main.js

+0

感謝您的幫助,我試過'src =「./ javascripts/main.js」'也是'src =「/ javascripts/main.js」'但我仍然只看到「連接」而不是其他的的js文件 – jSutcliffe90

0

你所面臨的問題已經被喜歡的WebPack庫回答。它做熱重裝。無論您對網絡應用程序所做的任何更改,都會被加載到客戶端,並且文件將被修補以更新更改,而無需重新啓動服務器。您將更新在瀏覽器中運行的腳本。

+0

嗨Nishanth,我已經安裝了nodemon現在正在autoupdating服務器,但我的main.js文件的res沒有正確加載 – jSutcliffe90

+0

您需要更新客戶端文件。看看熱重新加載庫的webpack或hr4R。當這些庫進行更改時,您將在瀏覽器控制檯上看到更改日誌。 –

+0

我使用nodemon來做到這一點,它不刷新我的HTML和CSS,只是不是我的JS文件 – jSutcliffe90