Неперехваченная ошибка ссылки: ввод-вывод не определен по индексу 40

#node.js #express #socket.io

#node.js #выразить #socket.io

Вопрос:

 var express= require("express")
var bodyParser=require("body-parser")

var app= express()
var http=require('http').Server(app)
var io=require('socket.io')(http)

app.use(express.static(__dirname))
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:false}))
var messages=[
    {name:"rohit",message:"hello"},
    {name:"rohan",message:"hi"},

]


app.get('/messages', (req,res) =>{

    res.send(messages)
})

app.post('/messages',(req,res)=>{
    messages.push(req.body)
    io.emit('message',req.body)
    res.sendStatus(200)
})
io.on('connection',(socket)=>{
    console.log('user connected')
})

var server= app.listen(3010, () => {

    console.log("Server is listening on port ",server.address().port)
})  
 <!DOCTYPE html>
<html>

<head>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP VmmDGMN5t9UJ0Z" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.5.1.min.js" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU 6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV rV" crossorigin="anonymous"></script>
<script>src="http://localhost:3010/socket.io/socket.io.js"</script>




</head>
<body>
    <div class="container">
        <br>
        <div class="jumbotron">
            <h1 class="display-4">Send Message</h1>
            <br>
            <input  id ="name" class="form-control" placeholder="Name">
            <br>
            <textarea  id ="message" class="form-control" placeholder="Message"></textarea>
            <br>
            <button id="send" class="btn btn-success">Send</button>



        </div>
        <div id="messages">


        </div>



    </div>
    <script>
       
        var socket=io() <!--io is not defined pls help to resove this issue thnks in advance-->
        
        $(()=>  {
            $("#send").click(() =>{

           var message={name: $("#name").val(),message: $("#message").val()}
           postMessage(message)
        })
        getMessages()
        })
        socket.on('message',addMessages)
        
        function addMessage(message){

            $("#messages").append(`<h4> ${message.name} </h4> <p> ${message.message} </p>`)
        }
        function getMessages(){

            $.get("http://localhost:3010/messages",(data)=>{

                data.forEach(addMessage);
            })
        }

        function postMessage(message){

              $.post("http://localhost:3010/messages",message)

               
        }


    </script>





</body>






</html>  

Это код для server.js и index.html соответственно. Моя ошибка:

 io is not defined at index 40
  

Я новичок в node.js и пытаюсь создать простое приложение для чата. Я знаю, что об этой ошибке здесь много говорилось. Но после нескольких сообщений, найденных через Google, это все еще не решило мою проблему.

Ответ №1:

используйте сценарий CDN

 <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>