Entonces, básicamente, lo que estoy tratando de hacer es crear una aplicación de chat con un sistema de inicio de sesión, pero por alguna razón no puedo armarlo y recibo un error cuando me uno a la sala, chat.hbs no puede encontrar el socket.io .js y también main.js está recibiendo un error de referencia con const socket = io(); (la aplicación de chat funciona bien sin el sistema de inicio de sesión)
Failed to load resource: the server responded with a status of 404 (Not Found) Uncaught ReferenceError: io is not definedat main.js:11Este es el archivo app.js
const express = require("express"); const path = require('path'); const http = require('http'); const socketio = require('socket.io'); const app = express(); const server = http.createServer(app); const io = socketio(server); const botName = "Bot"; app.use(express.static(path.join(__dirname, 'public'))); app.use(express.urlencoded({ extended: false })); // Parse JSON bodies (as sent by API clients) app.use(express.json()); app.use(cookieParser()); app.set('view engine', 'hbs'); //eldönti az útvonalat app.use('/', require('./routes/pages')); app.use('/auth', require('./routes/auth')); app.listen(5001, () => { console.log("Server started on Port 5001"); })Este es el main.js
const chatForm = document.getElementById('chat-form'); const chatMessages = document.querySelector('.chat-messages'); const roomName = document.getElementById('room-name'); const userList = document.getElementById('users'); // Felhasználó név és szoba név URL-ből const { username, room } = Qs.parse(location.search, { ignoreQueryPrefix: true, }); const socket = io(); // Csatlakozik chat szobába socket.emit('joinRoom', { username, room }); // Lekérdezi a szobát felhasználókat socket.on('roomUsers', ({ room, users }) => { outputRoomName(room); outputUsers(users); });Y el chat.hbs
<script src="/socket.io/socket.io.js"></script> <script src="/main.js"></script>Bueno, el problema fue que usé:
app.listen(5001, () => { console.log("Server started on Port 5001"); })en vez de:
server.listen(5001, () => { console.log("Server started on Port 5001"); })Szia, tendrás que esperar a que se cargue el DOM.
window.addEventListener('load', function () { // Your code goes here const socket = io(); socket.on("connect", () => { // you can only emit once the connection is established. socket.emit('joinRoom', { username, room }); }); })