Estoy tratando de probar mi código antes de subirlo al servidor. Sin embargo, si mi código no funciona, intenté ejecutarlo usando nodemon --exec npm start y npm start pero me sigue mostrando este error Advertencia: connect.session() MemoryStore no está diseñado para un entorno de producción, ya que perderá memoria , y no escalará más allá de un solo proceso. El servidor se está ejecutando en http://localhost:3000
aplicación.js
const express = require('express') const path = require('path') const hbs = require('express-hbs') const app = express() const http = require('http') const server = http.createServer(app) const session = require('express-session') const PORT = process.env.PORT || 3000 const io = exports.io = require('socket.io')(server) app.use(session({ resave: false, // don't save session if unmodified saveUninitialized: false, // don't create session until something stored secret: 'keyboard cat' })) io.on('connection', (socket) => { console.log('User connected') socket.on('createMessage', (newMessage) => { console.log('newMessage', newMessage) }) socket.on('disconnect', () => { console.log('User disconnected') }) }) app.engine('hbs', hbs.express4({ defaultLayout: path.join(__dirname, 'views', 'layouts', 'default') })) app.use(express.json()) app.set('view engine', 'hbs') app.use(express.urlencoded({ extended: false })) app.use(express.static(path.join(__dirname, 'public'))) app.use('/', require('./routes/home')) app.set('views', path.join(__dirname, 'views')) server.listen(PORT, () => { console.log(`Server is running at http://localhost:${server.address().port}`) })paquete.json
. . "scripts": { "start": "NODE_ENV=production node app.js", "devstart": "NODE_ENV=development nodemon --inspect ./app.js", "lint": "npx eslint . || exit 0", "lint:fix": "npx eslint . --fix || exit 0" }, . .no es un error Es una advertencia y sí, generalmente usa algo como Redis para el almacenamiento de sesiones en el lado del servidor. A continuación, hay algo así como un parámetro de tienda que podría establecerse en una instancia de Redis en lugar de MemoryStore.
app.use(session({ resave: false, // don't save session if unmodified saveUninitialized: false, // don't create session until something stored secret: 'keyboard cat' }))El almacén de memoria está bien para aplicaciones pequeñas y parece que no guarda nada en la sesión (no estoy seguro). Puede comentar esta línea y relacionar la solicitud de sesión expresa.