2013-05-08 44 views
4

新節點,並運行它使用Express和EJS節點呈現的HTML文件沒有找到相對路徑腳本

app.set('views', __dirname + '/views'); 
app.engine('html', require('ejs').renderFile); 

//load up index file 
app.get('/', function(req, res){ 
    res.render('index.html'); 
}); 

的HTML頁面拉動然而,HTML包括一些相對路徑JS腳本

<html> 
    ....more... 
<script src="js/libs/jquery.js"></script> 
<script src="js/libs/underscore.js"></script> 
<script src="js/libs/backbone.js"></script> 

如果我通過我的原始「本地主機/ myProject」運行我的HTML頁面,它一切正常。然而,如果我通過它設置成節點啓動我的文件爲「localhost:8080」

app.server.listen(8080); 

然後,它不再找到「/ JS」目錄。是否有某種配置,我錯過了,或者我應該採取另一種方式?

更新: 剛剛發現這個

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

可能是我所期待的,但我需要做一些重構

+0

嘗試用'/ js ...'引用不只是'js ...' – Mustafa 2013-05-08 06:37:55

回答

3

你應該配置快遞到服務器的靜態文件,例如,將所有靜態文件放在名爲「公共」的目錄下

app.configure(function() { 
    app.use(express.cookieParser()); 
    app.use(express.bodyParser()); 
    app.use('/public', express.static(__dirname + '/public')); 
    app.use(app.router);  
}); 

然後在yo你的html:

<script src="/public/js/libs/jquery.js"></script> 
+0

謝謝,我剛剛遇到了靜態文件配置。謝謝。一旦系統允許我將標記正確。 – abritez 2013-05-08 04:52:26

+0

請注意,快速配置方法已折舊並且不適用於4.X.X – t3dodson 2014-07-27 00:31:32