Я пытался запустить socket.io, но всегда получаю сообщение об ошибке клиента, поэтому я думаю, что внутри кода есть логическая бомба.
app.js
const express = require('express');
const app = express();
const router = express.Router();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.set('socketio', io);
const expressLayouts = require('express-ejs-layouts');
module.exports = router;
app.use(express.static(__dirname));
app.use(express.urlencoded({ extended: true }));
app.use(expressLayouts);
app.set('view engine', 'ejs');
app.use(function(req, res, next) {
next();
});
io.on('connection', function(socket){
console.log('a user connected');
});
app.use('/', require('./routes/test.js'));
const PORT = process.env.PORT || 8081;
app.listen(PORT, console.log(`Server started on port ${PORT}`));
Внутри файла маршрута я открываю страницу
test.js
const express = require('express');
const router = express.Router();
// Dashboard
router.get('/start', (req, res, next) => {
res.render('index2', {
caseArray: 'eins'
});
});
module.exports = router;
И, наконец, внутри шаблона, который я добавил:
<script
src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin="anonymous"
></script>
<script src="/socket.io/socket.io.js"></script>
<script>var socket = io();</script>
Но я всегда получаю ошибкусообщение в консоли браузера:
GET http://localhost:8081/socket.io/socket.io.js net::ERR_ABORTED 404 (Not Found)
(index):24 Uncaught ReferenceError: io is not defined
at (index):24
Как я понимаю из всего урока, этот узел отправит socket.io в запросе на html-страницу, а с html-страницей сервер подключается. Но нет сообщения о соединении, потому что файлы не существуют. Где моя проблема? В клиенте или на сервере?