0

내 App Engine 로그에 표시됩니다.Google App Engine connection.session() 오류

경고 :

메모리 누수가되며, 하나의 프로세스를지나 확장되지 않으므로 connection.session() MemoryStore는 프로덕션 환경을 위해 설계

없습니다.

이제 내 nodejs 앱에서 세션을 사용할 수 없습니다. 어떻게 해결할 수 있니?

답변

2

은 사용자 인증을 참조하고 가정은 AppEngine Node documentationexample에서 다음 코드 부분을주의 :

// In production use the App Engine Memcache instance to store session data, 
// otherwise fallback to the default MemoryStore in development. 
if (config.get('NODE_ENV') === 'production' && config.get('MEMCACHE_URL')) { 
    sessionConfig.store = new MemcachedStore({ 
    hosts: [config.get('MEMCACHE_URL')] 
    }); 
} 

기본값 MemoryStore 폴백은 기본적으로 개발 목적으로 만 존재합니다. 실제 사용을 위해 영구적 인/확장 가능한 세션 저장소를 선택해야합니다.

0

PM2를 사용하고 있거나 서버가 기본 세션 저장 메커니즘을 사용하여 여러 스레드를 실행하고 있다고 생각합니다. 이것은 개발 모드에서 일반적으로 사용하는 단일 스레드 솔루션을 확장하지 않습니다.

따라서 세션을 유지하려면 어딘가에 세션을 저장해야합니다. 예를 들어, Redis. 코드의

const EXPRESS   = require('express'); 
const APP    = EXPRESS(); 
const EXPRESS_SESSION = require('express-session'); 
const REDIS_STORE  = require('connect-redis')(EXPRESS_SESSION); 

APP.use(EXPRESS_SESSION({ 
    secret: 'YOUR_SECRET', 
    saveUninitialized: false, 
    resave: false, 
    store: new REDIS_STORE({ //storing the session in redis 
    host: 'localhost', 
    port: 6379, //redis port, should be 6379 by default 
    ttl: 300 //time-to-live, session will be destroyed if no activity in 5 mins 
    }) 
})); 

출처 : 개인 프로젝트