2012-07-14 52 views
1

這讓我瘋狂。EJS和jquery not loading javascript參考

我有一個快遞節點應用程序。它提供了一個名爲index.ejs的文件。

我想要做的就是在頁面上導入一個javascript文件(類似於jquery)。但它不會拉扯它,我會堅持下去(因爲這應該很簡單)。

在服務器端,我有這樣的代碼在一個名爲app.js:

var express = require('express'); 
var app = express.createServer(); 
var hostName = (process.env.VCAP_APP_HOST || 'localhost'); 
app.listen(process.env.VCAP_APP_PORT || 8000); 
app.use(express.static(__dirname + '/public/javascript/')); 


//Create the view 
app.set('views', __dirname + '/views'); 
app.set('view engine', 'ejs'); 
app.set('view options', { layout: false }); 
app.get('/', function(req, res){ 
    res.render('index.ejs', { 
       item : "document.write('Hello World');" 
    }); 
}); 

在EJS文件,我有這樣的:

<html> 
     <script> 
     <%= item %> 
    </script> 

<a href="">Link</a> 
<script type="text/javascript" src="/javascript/jquery.js"></script> 
</html> 

我可以在控制檯看到,該腳本未加載(顯示錯誤)。但對於我的生活,我無法弄清楚爲什麼。

+0

顯示什麼錯誤?如果您查看源代碼,HTML的外觀如何? – 2012-07-14 06:15:46

+0

GET http:// localhost:8000/javascript/jquery.js 404(Not Found),查看源代碼非常符合您的期望。它顯示我的腳本div和很多。 – ZacAttack 2012-07-14 06:17:40

+0

我剛剛意識到我弄糟了這個頭銜。 Gahh,這個晚上太晚了。 – ZacAttack 2012-07-14 06:19:11

回答

2

您需要添加一個靜態服務器來爲'/'下的其他文件提供服務。目前你的服務器只是響應發送給'/'(和視圖)的請求。

app.get在此之前行添加到您的快速設置:

// DOCUMENT_ROOT should point to the directory that contains your javascript directory. 
app.use(express.static(DOCUMENT_ROOT)); 
+0

沒有骰子我很害怕。同樣的問題:( – ZacAttack 2012-07-14 06:30:42

+0

你確定你正在將你的靜態服務器指向正確的目錄嗎?你可以用你當前的代碼和一些目錄結構信息更新這個問題嗎? – 2012-07-14 06:32:07

+0

done。我更新了代碼 – ZacAttack 2012-07-14 06:39:18

0

當您的客戶端請求/javascript/jquery.js,您的服務器將是尋找/public/javascript/javascript/jquery.js,我相當懷疑它會找到它。假設jquery.js實際上位於your_app/public/javascript中,將express.static()的路徑名設置爲__dirname + '/public'應該可行。