【问题标题】:socket.io, getting io is not defined on consolesocket.io,获取 io 未在控制台上定义
【发布时间】:2019-10-21 21:34:10
【问题描述】:

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

我已尝试包含 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 is not defined”。

【问题讨论】:

    标签: javascript html socket.io


    【解决方案1】:

    我认为您应该检查文档是否已加载,因此代码如下:

    // 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 库后,上述代码才能帮助您运行脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-14
      • 2011-08-03
      • 2013-12-26
      • 2022-12-11
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      相关资源
      最近更新 更多