Ошибка соединения Google App Engine.session()

Журналы моего App Engine показывают это.

Предупреждение: connection.session() MemoryStore не

предназначен для производственной среды, так как он будет протекать

памяти и не будет масштабироваться дальше одного процесса.

Теперь мое приложение nodejs не может использовать сеанс. Как мне это исправить?


person Samith Basnayaka    schedule 24.11.2017    source источник


Ответы (3)


Предполагая, что вы имеете в виду аутентификацию пользователя, обратите внимание на следующую часть кода из Документация по узлу AppEngine и пример:

// 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 в основном предназначен только для целей разработки; вам следует указать более постоянное/масштабируемое хранилище сеансов по вашему выбору для фактического использования.

person Amber    schedule 24.11.2017

Я думаю, вы используете PM2 или на вашем сервере работает несколько потоков с механизмом хранения сеансов по умолчанию. Это не масштабирует однопоточное решение, которое вы обычно используете в режиме разработки.

Следовательно, чтобы сохранить сеанс, вам нужно где-то его сохранить. Например, Редис.

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
  })
}));

Источник кода: Личный проект

person Mr. Alien    schedule 24.11.2017

Использование хранилища сеансов устранило ошибку.

используйте эту ссылку. https://github.com/expressjs/session#compiler-session-stores

В README.md в разделе совместимые хранилища сеансов есть список совместимых хранилищ сеансов для экспресс-файлов.

person Samith Basnayaka    schedule 26.11.2017