2012-12-14 15 views
6

Jestem nowy w pracy z nodejs i staram się tylko uruchomić serwer, który pracuje już z moimi kolegami z drużyny. Jestem na komputerze mac i już zainstalowałem wszystkie potrzebne moduły z "npm install". Teraz pojawia się problem z modułem "cookie-signature", który jest już zawarty w module "express". Próbuję uruchomić program i dostaję żadnego błędu, ale gdy próbuję otworzyć stronę na localhost: 3000, pojawia się następujący błąd:NodeJS - Wymagany sekret tajny

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

Moduł nigdy nie jest używany w zasobach serwerowych. Sprawdziłem już użycie funkcji "znak", ponieważ błąd jest pobranym błędem, który sygnalizuje, że zasoby mogą robić coś złego, ale jest używany tylko przez ekspresowe lub inne moduły w ekspresowym. Od wielu dni szukam w Internecie i jeszcze nie znalazłem rozwiązania. Czego mi brakuje? Z góry dziękuje za twoją pomoc.

+0

Czy używasz modułu, który wymaga użycia sesji ekspresowej? Czy używasz app.use (express.session (..)) na swoim serwerze? –

+0

Tak, oto kod: var app = express(); app.configure (function() { [...] \t app.use (express.session ({ 'tajne': crypto.randomBytes (64)})); –

+0

Przypuszczam, że masz inny wersje niektórych modułów od członków twojej drużyny Co się stanie, jeśli twoi koledzy z drużyny zaktualizują swoje moduły za pomocą "npm install" na dyrektora projektu? –

Odpowiedz

10

Podczas konfigurowania wyraźnej instancji zapotrzebowanie to:

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

upewniając się cookieParser (z tajnym String) jest przed express.session()

+0

Dziękuję! To wydaje się działać: aplikacja .use (express.cookieParser ('' + crypto.randomBytes (64) + '')); app.use (express.s ession()); –

+0

Ta odpowiedź jest nieaktualna. –

+0

Obowiązuje dla każdego, kto używa [email protected] –

0

ze zaktualizowaną wyraźnej wersji:

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