내 App Engine 로그에 표시됩니다.Google App Engine connection.session() 오류
경고 :
메모리 누수가되며, 하나의 프로세스를지나 확장되지 않으므로 connection.session() MemoryStore는 프로덕션 환경을 위해 설계
없습니다.
이제 내 nodejs 앱에서 세션을 사용할 수 없습니다. 어떻게 해결할 수 있니?
내 App Engine 로그에 표시됩니다.Google App Engine connection.session() 오류
경고 :
메모리 누수가되며, 하나의 프로세스를지나 확장되지 않으므로 connection.session() MemoryStore는 프로덕션 환경을 위해 설계
없습니다.
이제 내 nodejs 앱에서 세션을 사용할 수 없습니다. 어떻게 해결할 수 있니?
은 사용자 인증을 참조하고 가정은 AppEngine Node documentation 및 example에서 다음 코드 부분을주의 :
// 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
폴백은 기본적으로 개발 목적으로 만 존재합니다. 실제 사용을 위해 영구적 인/확장 가능한 세션 저장소를 선택해야합니다.
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
})
}));
출처 : 개인 프로젝트
세션 저장소을 사용하면 오류가 해결되었습니다.
이 링크를 사용하십시오. 에서 https://github.com/expressjs/session#compatible-session-stores
는 expressjs 호환 세션 상점의 목록이 호환 세션 저장에서을 README.md.