Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ReferenceError:找不到变量:io_Jquery_Html_Node.js_Socket.io_Directory Structure - Fatal编程技术网

Jquery ReferenceError:找不到变量:io

Jquery ReferenceError:找不到变量:io,jquery,html,node.js,socket.io,directory-structure,Jquery,Html,Node.js,Socket.io,Directory Structure,我有以下文件夹结构html目录:index.html、index.html、public/js目录:main.js、socket.js,根目录中有server.js 在server.js中,我设置socket.io如下: /********************* WEBSOKETS ***************************/ const io = require('socket.io')(https); io.on('connection', functi

我有以下文件夹结构html目录:index.html、index.html、public/js目录:main.js、socket.js,根目录中有server.js

在server.js中,我设置socket.io如下:

/*********************  WEBSOKETS ***************************/

    const io = require('socket.io')(https);

    io.on('connection', function (socket) {
        console.log('a user connected');
        socket.on('disconnect', function () {
            console.log('user disconnected');
        });
    });

    /************************************************ ***/

    io.on('connection', function (socket) {
        socket.on('chat message', function (msg) {
            console.log('message: ' + msg);
            io.emit('chat message', msg);
        });
    });
在socket.js文件中,我处理它的客户端部分:

(function ($) {
    var socket = io().connect() // connect to the server

    $(function () {
        $('form').submit(function () {
            socket.emit('chat message', $('#m').val());
            $('#m').val('');
            return false;
        });
        socket.on('chat message', function (msg) {
            $('#messages').append($('<li>').text(msg));
            var happyEmoji = $('#messages').html().replace(/(\:\))/g, '&#x1F600;');
            $('#messages').html(happyEmoji);
            var sadEmoji = $('#messages').html().replace(/(\:\()/g, '&#x1F614;');
            $('#messages').html(sadEmoji);
        });
    });
}jQuery

但我得到了:

ReferenceError:找不到变量:io

我还试图直接将其放在main.html文件中,但遇到了相同的错误。我认为这是因为main.html位于html目录中,不能通过这种方式直接访问server.js中的io


如何解决此问题?

您需要将此行插入main.html文件:

这将设置io变量,以便您可以使用它:

var socket = io();

更多信息和示例。

看起来像是范围问题。这就是整个server.js吗?如果在花括号内,那么io的作用域仅限于该块,并且在socket.js文件中不可见。