NodeJS - 需要错误密码

时间:2012-12-14 11:29:11

标签: node.js express

我是使用nodejs的新手,我只是想创建一个已经和我的队友一起工作的服务器。 我在mac上并且已经安装了所有需要的模块“npm install”。 现在模块“cookie-signature”似乎存在问题,该模块已经包含在“express”模块中。我试图启动程序,我没有错误,但当我尝试在localhost:3000上打开页面时,我收到以下错误:

/Users/kevinglaap/Sites/Uni/git/node_server/node_modules/express/node_modules/cookie-signature/index.js:19
  if ('string' != typeof secret) throw new TypeError('secret required');
                                       ^
TypeError: secret required
    at Object.exports.sign (/Users/kevinglaap/Sites/Uni/git/node_server/node_modules/express/node_modules/cookie-signature/index.js:19:40)
    at ServerResponse.end (/Users/kevinglaap/Sites/Uni/git/node_server/node_modules/express/node_modules/connect/lib/middleware/session.js:267:34)
    at ServerResponse.EventEmitter.emit (events.js:93:17)
    at ServerResponse.res.writeHead (/Users/kevinglaap/Sites/Uni/git/node_server/node_modules/express/node_modules/connect/lib/patch.js:73:36)
    at ServerResponse._implicitHeader (http.js:932:8)
    at ServerResponse.OutgoingMessage.end (http.js:767:10)
    at res.end (/Users/kevinglaap/Sites/Uni/git/node_server/node_modules/express/node_modules/connect/lib/middleware/session.js:282:13)
    at /Users/kevinglaap/Sites/Uni/git/node_server/node_modules/express/node_modules/connect/lib/middleware/session/memory.js:73:11
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)

该模块从不在服务器资源中使用。我已经检查了“sign”函数的用法,因为错误是一个读取错误,它表示资源可能做错了,但它只用于express中的express或其他模块。 我已经在网上搜索了几天,还没有找到解决方案。我错过了什么?在此先感谢您的帮助。

3 个答案:

答案 0 :(得分:12)

配置快递实例时,您需要:

app.use(express.cookieParser('your secret here'));
app.use(express.session());

确保您的cookieParser(带有您的秘密字符串)位于express.session()

之前

答案 1 :(得分:1)

更新后的快递版:

var app = express();
app.use(require('express-session')({ secret: 'keyboard cat', resave: true, saveUninitialized: true }));

答案 2 :(得分:0)

在中间件中创建 express-session 实例时应该添加一个秘密。

使用 .env 文件来存储所有机密总是一个好习惯,而不仅仅是添加一个字符串。

在 .env 中:

secret='my_secret'

在 server.js 中:

app.use(cookieParser())
app.use(session({
  resave:true,
  saveUninitialized:true,
  secret:process.env.secret,
  cookie:{maxAge:3600000*24}
}))