2014-01-06 113 views
0

我正在嘗試使用<script>標記加載JavaScript。嘗試使用快速加載腳本時發生500錯誤

我使用this question的代碼,但我認爲他得到了400錯誤,而我得到了500錯誤。

我的一些快遞代碼:

app.configure(function() { 
    app.use(express.bodyParser()); //not sure... 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'ejs'); 
    app.use(express.static(__dirname + '/public')); 
}); 
app.set('view options', { 
    layout: false 
}); 

摘錄我Index.ejs文件:

<!DOCTYPE html> 
<html> 
<head> 
<style src="./list.css"></style> 
<LINK href="blockStyle.css" title="compact" rel="stylesheet" type="text/css"> 


<script src="/public/js/libs/jquery/jquery-2.0.3"></script> 
<script src="socket.io/socket.io.js"></script> 
<script src="/public/js/app.js"></script> 

下面是一些來自終端的輸出:

GET /public/js/libs/jquery/jquery-2.0.3 500 9ms 
TypeError: Cannot read property 'connect.sid' of undefined 
    at Object.session [as handle] (/Users/humble_student/Desktop/ndent/node_modules/express/node_modules/connect/lib/middleware/session.js:239:32) 
    at next (/Users/humble_student/Desktop/ndent/node_modules/express/node_modules/connect/lib/proto.js:193:15) 
    at resume (/Users/humble_student/Desktop/ndent/node_modules/express/node_modules/connect/lib/middleware/static.js:65:7) 
    at SendStream.error (/Users/humble_student/Desktop/ndent/node_modules/express/node_modules/connect/lib/middleware/static.js:80:37) 
    at SendStream.EventEmitter.emit (events.js:126:20) 
    at SendStream.error (/Users/humble_student/Desktop/ndent/node_modules/express/node_modules/send/lib/send.js:147:51) 
    at SendStream.onStatError (/Users/humble_student/Desktop/ndent/node_modules/express/node_modules/send/lib/send.js:248:48) 
    at SendStream.pipe (/Users/humble_student/Desktop/ndent/node_modules/express/node_modules/send/lib/send.js:320:26) 
    at Object.oncomplete (fs.js:297:15) 

謝謝非常!讓我知道是否有任何事情可以澄清我的問題。

編輯: 我試着設置會話,但我不確定自己是否正確地進行了操作(我是盲目複製教程中的代碼)。

我:

和helperLib我:

var MemoryStore = express.session.MemoryStore 
var sessionStore = new MemoryStore(); 
var getSessionstore = function(){ return sessionStore; } 

EDIT2: 問題是,我在我的所有腳本的末尾缺少一個.js。謝謝你的幫助!

思考爲什麼我介紹了一個錯誤:

的錯誤是造成的,因爲我厭倦了使用requireJS的,所以我複製從那裏進入腳本標記的路徑(這在端忽略的.js)(其要求他們)。我甚至確定了「複製代碼而不是從頭開始編寫代碼」,作爲我的一個常見錯誤來源。我想我需要真正實現這個作爲一個檢查清單來遵循(有一本關於檢查表被使用在「臭蟲」使人們的生命被稱爲「檢查表宣言」的領域中的好書。

(另外,我要指出,當我用的CookieStore()的東西,我的插座沒有工作。)

+2

您的公開目錄是爲了快速知道文件的位置,因此請勿在模板中包含「/ public」。 IIRC,快遞首先檢查您提供給公衆的所有請求。另外,你是否嘗試使用會話?你是否設置了快速使用它們? – Chris

+0

這就是我最初想到的會議,但我在帖子中提到的問題說要使用它們。 (我嘗試了兩種方式)。 – curtissv

+0

我很確定會話不會導致這種情況,因爲當您嘗試獲取'jquery-2.0.3'時發生錯誤。那最後還應該有一個.js嗎?另外,請不要在index.ejs文件中包含「/ public」。 應該是我相信。 – Chris

回答

0

你可以嘗試指定像在您的應用程序如下:

app.use(express.cookieParser()); 
    app.use(express.session({secret: 'secret', key: 'express.sid'})) 

根據您分享的內容,似乎沒有爲會話明確配置。

+0

我複製了該行(在我編輯的帖子中添加的行的頂部),並且仍然收到500錯誤。 – curtissv

+0

你有餅乾解析器 - 會話是通過cookies實現的 –

+0

我更新了答案 –

相關問題