当我去我的应用程序被推送到Heroku时,需要很长时间才能加载。我等待它加载,但它有一个错误。奇怪的是昨天去网站很好,我能够在今天晚些时候加载网站。但是当我收到错误时,我检查了Heroku日志并得到了这个警告:
2017-10-15T06:19:09.735366+00:00 app[web.1]: > node index.js
2017-10-15T06:19:09.735365+00:00 app[web.1]: > voyage-2@1.0.0 start /app
2017-10-15T06:19:09.735367+00:00 app[web.1]:
2017-10-15T06:19:10.515212+00:00 app[web.1]: Warning: connect.session() MemoryStore is not
2017-10-15T06:19:10.515232+00:00 app[web.1]: designed for a production environment, as it will leak
2017-10-15T06:19:10.515233+00:00 app[web.1]: memory, and will not scale past a single process.
我知道我的代码中的某些内容并非设计用于制作,但我不确定这是指代我的代码的哪一部分。我使用passport.js进行授权,并使用Google和Facebook策略连接,我在index.js中使用快速会话包。这是警告所指向的吗?有人可以解释这个警告可能意味着什么吗?
答案 0 :(得分:1)
您正在使用connect-session
模块,它可以处理HTTP会话(显然)。出现此警告是因为您没有将模块配置为使用任何其他存储会话数据的方式(数据库,文件等)。执行此操作时,connect-session
将内存用作会话存储。
然而,这不适合生产环境。它有内存泄漏,这意味着您的应用程序会频繁崩溃。
更重要的是,它无法在云环境(例如Heroku或Amazon Cloud或Google Cloud Platform)中正常运行,因为在此类环境中,您的应用程序可在多个实例中运行。存储在应用程序实例中的会话数据将无法从另一个实例访问。这会导致用户反复注销,等等。