socket.io,在控制台上未定义获取io

时间:2019-06-06 11:06:48

标签: javascript html socket.io

我正在使用套接字设置一个基本的聊天应用程序,但是在编程的初始阶段,我会收到此错误:客户端上“未定义io”。

我尝试过添加CDN并添加 , 但没有成功。

HTML

<head>
    <script src="jquery-3.2.1.js"></script>
    <script src="/socket.io/socket.io.js"></script>
    <script src="script.js"></script>
</head>

script.js

let socket = io();

console.log("socket formed on " + socket.id)

server.js

const express = require('express')
const path = require('path')
const socketio = require('socket.io')
const http = require('http')

const app = express();
const server = http.createServer(app)
const io = socketio(server)

app.use('/', express.static(path.join(__dirname, 'frontend')))

io.on('connection', (socket) => {
    console.log("New socket formed fksrom " + socket.id)
})

server.listen(2345, () => console.log('website open on http://localhost:2345'))

我希望套接字ID在控制台中显示, 但在控制台上它显示“未定义io”。

1 个答案:

答案 0 :(得分:0)

我认为您应该检查文档是否已加载,所以下面是以下代码:

// Pure Javascript
if(document.readyState === "complete") {
  //Already loaded!
}
else {
  //Add onload or DOMContentLoaded event listeners here: for example,
  window.addEventListener("onload", function () {/* Move your code here */}, false);
  //or
  //document.addEventListener("DOMContentLoaded", function () {/* code */}, false);
}

由于您已经拥有jQuery:

$(document).ready(function(){
    /** Your code here */
})

您正在尝试在加载脚本之前访问脚本,因此上述代码仅在完成加载jQuery库和socket.io.js库后,才可以帮助您运行脚本。