2014-01-06 91 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

我更新了答案 –

相关问题