Recibo este mensaje de error, intenté todo, pero no puedo entender el problema. Esta duda es del video de la aplicación de chat de Javascript Mastery https://www.youtube.com/watch?v=ZwFA3YMfkoc&list=PLnVfUXqrBawfHoUBpnghPZed-TteNYBRn&index=4
Mensaje de error:
TypeError: Cannot read properties of undefined (reading 'room') at Socket. (C:\Users\Jatan\chat-app\server\index.js:43:20) at Socket.emit (node:events:520:28) at Socket.emitUntyped (C:\Users\Jatan\chat-app\server\node_modules\socket.io\dist\typed-events.js:69:22) at C:\Users\Jatan\chat-app\server\node_modules\socket.io\dist\socket.js:465:39 at processTicksAndRejections (node:internal/process/task_queues:78:11) [nodemon] app crashed - waiting for file changes before starting...Índice.js:
socket.on('sendMessage', (message , callback) => { const user = getUser(socket.id) io.to(user.room).emit('message', {user:user.name, text: message}) callback(); })Editar:
resultado de console.log (usuario):
[nodemon] starting `node index.js` Server has started on port 5001 undefined C:\Users\Jatan\chat-app\server\index.js:47 io.to(user.room).emit('message', {user:user.name, text: message}) ^ TypeError: Cannot read properties of undefined (reading 'room') at Socket.<anonymous> (C:\Users\Jatan\chat-app\server\index.js:47:20) at Socket.emit (node:events:520:28) at Socket.emitUntyped (C:\Users\Jatan\chat-app\server\node_modules\socket.io\dist\typed-events.js:69:22) at C:\Users\Jatan\chat-app\server\node_modules\socket.io\dist\socket.js:465:39 at processTicksAndRejections (node:internal/process/task_queues:78:11) [nodemon] app crashed - waiting for file changes before starting...resultado después de console.log(socket.id):
Server has started on port 5001 3EQA0pQ5RuZenc8nAAAH C:\Users\Jatan\chat-app\server\index.js:46 io.to(user.room).emit('message', {user:user.name, text: message}) ^ TypeError: Cannot read properties of undefined (reading 'room') at Socket.<anonymous> (C:\Users\Jatan\chat-app\server\index.js:46:20) at Socket.emit (node:events:520:28) at Socket.emitUntyped (C:\Users\Jatan\chat-app\server\node_modules\socket.io\dist\typed-events.js:69:22) at C:\Users\Jatan\chat-app\server\node_modules\socket.io\dist\socket.js:465:39 at processTicksAndRejections (node:internal/process/task_queues:78:11) [nodemon] app crashed - waiting for file changes before starting...Finalmente obtuve la solución.
Código actualizado:
const users = []; const addUser = ({id,name,room}) => { //name = name.trim().toLowerCase(); //room = room.trim().toLowerCase(); const existingUser = users.find((user)=> user.name === name && user.room === room) if (existingUser) { return {error: 'Username is taken'} } const user = {id,name,room}; users.push(user); return {user} } const removeUser = (id) => { const index = users.findIndex((user) => user.id === id) if (index !== -1){ return users.splice(index, 1)[0] } } const getUser = (id) => { const user = users.find((user) => user.id === id) return user } const getUsersInRoom = (room) => {users.filter((user) => user.room === room)} module.exports = { addUser, removeUser, getUser, getUsersInRoom}Gracias a todos los que intentaron solucionar mi problema.