Почему я не могу использовать express.js получить метод с помощью сокета.http-сервер ввода-вывода

#javascript #node.js #express #socket.io

Вопрос:

Вот мой код:

 const consts = require('./public/script/consts.js'); const express = require('express'); const app = express(); const server = require('http').createServer(app); const { Server } = require('socket.io'); const io = new Server(server);  function io_on_connection(socket) {  console.log("a user connected"); // TODO: Emit user connected    socket.on('sendmessage', (message) =gt; {  io.emit("recievemessage", { username: "litte_coder", message: message });  }); }  function app_get_root(req, res) {  console.log("index");  res.sendFile(__dirname   '/public/index.html'); }  function server_listen() {  console.log('Server is running...'); }  /* Socket.io */ io.on('connection', io_on_connection);  //app.use(express.static(__dirname   '/public')); app.get('/', app_get_root);  server.listen(consts.PORT, server_listen);  

Когда я использую app.use(express.static...) , app_get_root обратный вызов не вызывает, но мой index.html отслужил. Моя структура каталогов выглядит следующим образом:

 ├── app.js ├── package.json ├── package-lock.json └── public  ├── index.html  ├── script  │   ├── consts.js  │   └── index.js  └── style  └── style.css  

Но если мой обратный вызов app_get_root не работает, как он служит моему index.html досье?

Ответ №1:

Я запустил его, и если он работает для меня, даже добавив app.use(express.static(«общедоступный»));

Откуда вы знаете, что app_get_root не вызывается.

console.log(«индекс») печатается в консоли узла, а не в браузере.

Комментарии:

1. Да, код работает и для меня тоже.

2. На консоли вызывается io_on_connection. Я вижу «подключенный пользователь». Но когда я использую приложение.используйте…. он не пишет «индекс» на консоли. Так что это не называлось. Просто строка «пользователь подключен» из io_on_connection (извините за плохой английский)