2012-12-14 12 views
6

ich bin neu in der Arbeit mit Nodejs und ich versuche nur einen Server zu starten, der bereits mit meinen Teamkollegen arbeitet. Ich bin auf einem Mac und habe bereits alle benötigten Module mit "npm install" installiert. Jetzt scheint es ein Problem mit dem Modul "Cookie-Signatur" zu geben, welches bereits im "express" -Modul enthalten ist. Ich versuche, das Programm zu starten und ich bekomme keinen Fehler, aber wenn ich versuche, die Seite auf localhost zu öffnen: 3000, erhalte ich folgende Fehlermeldung:NodeJS - Fehlergeheimnis erforderlich

/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) 

Das Modul wird nie in den Server-Ressourcen verwendet. Ich habe bereits die Verwendung der "sign" -Funktion überprüft, weil der Fehler ein abgerufener Fehler ist, der anzeigt, dass die Ressourcen möglicherweise etwas falsch machen, aber nur von Express- oder anderen Modulen innerhalb von express verwendet wird. Ich habe seit Tagen im Internet gesucht und habe noch keine Lösung gefunden. Was vermisse ich? Vielen Dank im Voraus für Ihre Hilfe.

+0

Verwenden Sie ein Modul, für das eine Express-Sitzung benötigt wird? Verwenden Sie app.use (express.session (..)) auf Ihrem Server? –

+0

Ja, hier ist der Code: var app = express(); app.configure (function() { [...] \t app.use (express.session ({ 'Geheimnis': crypto.randomBytes (64)})); –

+0

Ich würde vermuten, dass Sie anders haben Versionen auf einigen Modulen von Ihren Teamkollegen Was passiert, wenn Ihre Teamkollegen ihre Module mit "npm install" auf dem Projektleiter aktualisieren? –

Antwort

10

Wenn Ihr ausdrückliches Beispiel Ihre Notwendigkeit der Konfiguration folgendermaßen aus:

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

Sicherstellen, dass Ihre cookieParser (mit Ihrem geheimen String) ist vor dem express.session()

+0

Danke! Das scheint zu funktionieren: app .use (express.cookieParser ('' + crypto.randomBytes (64) + '')); app.use (express.s ession()); –

+0

Diese Antwort ist outdateeeed –

+0

Es gilt für jeden mit [email protected] –

0

mit der aktualisierten Express-Version:

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