【问题标题】:getting error in <script src = "/socket.io/socket.io.js"></script><script src = "/socket.io/socket.io.js"></script> 中出现错误
【发布时间】:2018-07-22 12:33:26
【问题描述】:

我知道这个问题已经被问过很多次了,但我花了 3 个小时试图弄清楚但无济于事。我在 GET 中遇到错误 http://localhost:3000/socket.io/socket.io.jsnet::ERR_ABORTED 并且 io 没有定义。任何帮助将不胜感激。我正在输入额外的内容,因为我的帖子需要更多详细信息............

 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');

});

【问题讨论】:

  • 向我们显示准确的错误文本。
  • GET localhost:3000/socket.io/socket.io.js net::ERR_ABORTED index.js:1 Uncaught ReferenceError: io is not defined at index.js:1 (anonymous) @ index.js:1 localhost/:36 GET @987654323 @net::ERR_ABORTED
  • 不在 cmets 中,添加到帖子中。
  • 提到了

标签: javascript node.js mongodb sockets socket.io


【解决方案1】:

在您的 server/server.js 中,在代码的最后,将 app.listen() 更改为 server.listen(),因为 express 要求您实例化 HTTP Socket.IO 中的服务器。

这应该是 server.js

的新结尾部分
 server.listen(port,()=>{

console.log('server started');

});

【讨论】:

    【解决方案2】:

    在 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中的includes。首先你需要包含socket.io,然后在index.js中使用它。

    在 index.js 中

    var socket = io.connect();
    

    【讨论】:

      【解决方案3】:

      错误已解决。这是一个愚蠢的错误!因为 socket.io 使用 http 服务器而不是 express 服务器。所以我确实创建了一个 http 服务器,但在监听端口时,我使用了app.listen() 之类的快递。在 server/server.js 中应该是:

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

      【讨论】:

        【解决方案4】:

        试试这个。改变,

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

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

        【讨论】:

        • 当然是在ip地址后面加上端口号
        • 我也做了同样的事情。 localhost:3000 .. 无论如何它都不起作用!
        • 那无法解决。 .错误说它无法加载客户端socket.io,因此无法识别io!
        • 我使用相同的逻辑来创建聊天应用程序,它当时有效,但现在它显示错误,让我抓狂
        • 服务器怎么样?跑完会说什么?是在 fork 模式下运行吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-24
        • 1970-01-01
        • 2015-06-07
        • 2023-02-11
        • 1970-01-01
        • 1970-01-01
        • 2011-02-26
        相关资源
        最近更新 更多