在 <脚本 src 中获取错误 = "/socket.io/socket.io.js" ></script>



我知道这个问题已经被问到很多次,我花了3个小时试图弄清楚它,但无济于事。我遇到了错误 http://localhost:3000/socket.io/socket.io.js net :: err_aborted 而且IO未定义。任何帮助将不胜感激。我正在键入额外的coz,我的帖子需要更多详细信息..........

 public/index.html
 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" media="screen" href="styles.css" />
</head>
<body>
    <div id="wrapper">
            <div class="form_div" id ="login">
            <p class="form_label">LOGIN FORM</p>
            <form method="post" action="">
            <p><input id ="user-name" type="text" placeholder="Enter user-name"></p>
            <p><input id = "pass-word" type="password" placeholder="**********"></p>
            <p><input id = "submit" type="submit" value="LOGIN"></p>
            </form>
            </div>
            <br>
            <br>
            <br>
            <div class="form_div" id = "signup">
            <p class="form_label">SIGNUP FORM</p>
            <form method="post" action="">
            <p><input id ="signupusername" type="text" placeholder="Enter 
             Name"></p>
            <p><input id = "signuppass" type="password" 
             placeholder="**********"></p>
            <p><input id ="register" type="submit" value="SIGNUP"></p>
            </form>
            </div>
            </div>
            <script src = "index.js"></script>
            <script src = "/socket.io/socket.io.js"></script>

public/index.js
 var socket = io();
var loginDiv = document.getElementById('login');
var Username = document.getElementById('user-name');
var loginPassword = document.getElementById('pass-word');
var login = document.getElementById('submit');
var SignUpDiv = document.getElementById('signup');
var Signupuser = document.getElementById('signupusername');
var Signuppass = document.getElementById('signuppass');
var signup = document.getElementById('register');

login.onclick = function(){
    socket.emit('login-details',{
        username:Username.value,
        password:loginPassword.value
    });
}
signup.onclick = function(){
    socket.emit('signup-details',{
        newuser:Signupuser.value,
        newuserpassword:Signuppass.val
    });
}
socket.on('login-response',(data)=>{
    if(data.success){
        alert('login Successful');
    }
    else{
        alert('login Unsuccessful');
    }
});
socket.on('signup-response',(data)=>{
    if(data.success){
        alert('Signup Successful')
    }
    else{
        alert('Signup-Successful')
    }
});




server/server.js

var express = require('express');
var path = require('path');
var http = require('http'); 
var MongoClient = require('mongodb').MongoClient;
const socketIO = require('socket.io');

var app = express();
 var server = http.createServer(app);
const port = process.env.PORT ||3000;
var io = socketIO(server);

const pathjoin = path.join( __dirname ,'../public');


app.use(express.static(pathjoin));

MongoClient.connect('mongodb://localhost:27017/DETAILS',(err,client)=>{
 if(err){
  return console.log('unable to connect to the MongoDb server');
   }
  const db =client.db('DETAILS');

   console.log('connected to the MongoDb server');
 });

 io.on('connection',(socket)=>{
 console.log('new user connected');



//login
socket.on('login-details',(data)=>{
db.collection('user-
details').find({username:data.username,password:data.password},
(err,result)=>{
    if(err) throw err;
    socket.emit('login-response',{
        success:true
    });
 });
});
//signup
socket.on('signup-details',(data)=>{
db.collection('user-
details').insert({username:data.newuser,password:data.newuserpassword},
(err,result)=>{
    if(err) throw err;
    socket.emit('signup-response',{
        success:true
    });
  });
 });
});


 app.listen(port,()=>{
console.log('server started');
});

在您的> server/server.js 中,在代码的末尾,将app.listen()更改为server.listen(),因为Express要求您实例化 http socket.io中的服务器。

这应该是您的新结尾部分 server.js

 server.listen(port,()=>{
console.log('server started');
});

in Index.html

<script src = "index.js"></script> <script src = "/socket.io/socket.io.js"></script>

将其更改为

        <script src = "/socket.io/socket.io.js"></script>
<script src = "index.js"></script>

交换html中的包含。首先您需要包含socket.io,然后在index.js。

中使用它。

在index.js

var socket = io.connect();

已解决错误。这是一个愚蠢的错误!由于socket.io使用 http 服务器,而不是Express Server。因此,我确实创建了 http 服务器,但是在聆听端口时,我使用express等 app.listen()。在服务器/server.js中应该是:

server.listen(port,()=>{ console.log('server started');});

尝试一下。更改,

<script src = "/socket.io/socket.io.js"></script>

to

<script src="http://YOUR_IP_ADDRESS/socket.io/socket.io.js"></script>

最新更新