Не запускается приложение после деплоя с гитом

102
24 мая 2021, 16:40

Я новичок в node.js, хочу запустить простой чат с помощью сервиса heroku и библиотеки socket.io. Я подключил heroku к своему репозиторию и начал сборку. Все прошло как надо. Но как это запустить на сервере heroku? Данный код не работает на сервере heroku.

Локально код отрабатывает как надо.

const express = require('express'); 
const app = express(); 
const http = require('http').createServer(app); 
const io = require('socket.io')(http); 
 
app.get('/', (req, res) => { 
  res.sendFile(__dirname + '/index.html'); 
}); 
 
io.on('connection', (socket) => { 
  console.log('a user connected'); 
  socket.on('disconnect', () => { 
    console.log('user disconnected') 
  }); 
 
  socket.on('chat message', (msg) => { 
    io.emit('chat message', msg); 
  }) 
 
  socket.broadcast.emit('hi') 
}); 
 
http.listen(3000, () => { 
  console.log('listening on *:3000'); 
});
<!DOCTYPE html> 
<html lang="en"> 
 
<head> 
  <title>Socket.IO chat</title> 
  <style> 
    * { 
      margin: 0; 
      padding: 0; 
      box-sizing: border-box; 
    } 
     
    body { 
      font: 13px Helvetica, Arial; 
    } 
     
    form { 
      background: #000; 
      padding: 3px; 
      position: fixed; 
      bottom: 0; 
      width: 100%; 
    } 
     
    form input { 
      border: 0; 
      padding: 10px; 
      width: 90%; 
      margin-right: .5%; 
    } 
     
    form button { 
      width: 9%; 
      background: rgb(130, 224, 255); 
      border: none; 
      padding: 10px; 
    } 
     
    #messages { 
      list-style-type: none; 
      margin: 0; 
      padding: 0; 
    } 
     
    #messages li { 
      padding: 5px 10px; 
    } 
     
    #messages li:nth-child(odd) { 
      background: #eee; 
    } 
  </style> 
</head> 
 
<body> 
  <ul id="messages"></ul> 
  <form id="form" action=""> 
    <input id="m" autocomplete="off" /> 
    <button>Send</button> 
  </form> 
 
  <script src="/socket.io/socket.io.js"></script> 
  <script> 
    const socket = io(); 
    const form = document.getElementById('form'); 
    let inpitVal = document.getElementById('m'); 
    const messagesContainer = document.getElementById('messages'); 
    form.addEventListener('submit', (e) => { 
      e.preventDefault(); 
      if (inpitVal.value) { 
        socket.emit('chat message', inpitVal.value); 
        inpitVal.value = ''; 
        return false; 
      } 
    }) 
    socket.on('chat message', (msg) => { 
      const message = document.createElement('li'); 
      message.innerHTML = msg; 
      messagesContainer.appendChild(message); 
    }) 
  </script> 
</body> 
 
</html>

Answer 1

Вообще, я имею ровно такую же проблему, но судя по вашему коду, вы постоянно загружаете свой node сервер на 3000ом порте! Если же говорить про хост heroku, то при запуске, он дает свой порт, который доступен в переменной:

const PORT = process.env.PORT || 3000;

Возможно это и не поможет, но попытка не пытка!

READ ALSO
Как этот jQuery код выглядел бы на чистом javascript?

Как этот jQuery код выглядел бы на чистом javascript?

Здраствуйте! Пишу сайт по продаже косметики для портфолиоСам сайт написан полностью на чистом javascript

107
React-spring анимация после анимации

React-spring анимация после анимации

Как с помощю библиотеки react-spring или просто с помощю react и css , сделать анимацию после анимацииК примеру у меня есть div и я хочу сначала увеличить...

117