尝试使用express加载脚本时出现500错误

时间:2014-01-06 00:25:11

标签: javascript node.js express syntax-error

我正在尝试使用<script>标记加载javascript。

我正在使用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。谢谢你的帮助!

为什么我介绍了这个bug的想法:

该错误是因为我厌倦了使用requireJS引起的,所以我将路径从那里(最后省略了.js)复制到脚本标签(需要它们)。我甚至已经确定“复制代码而不是从头开始编写代码”作为我的常见错误来源。我想我需要实际将其作为一个检查列表来实现(有一本关于检查表的好书,这些检查表用于“bug”造成人们生活费用的领域,称为“清单宣言”)。

(另外,我应该提一下,当我使用cookiestore()时,我的套接字不起作用。)

1 个答案:

答案 0 :(得分:0)

您可以尝试在应用中指定以下内容:

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

根据您共享的内容,您似乎没有为会话配置express。