【问题标题】:ReferenceError: Can't find variable: ioReferenceError:找不到变量:io
【发布时间】:2018-10-25 15:14:22
【问题描述】:

我有如下文件夹结构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

我也尝试直接放置在我的 ma​​in.html 文件中,但我得到了同样的错误。我认为这是因为 ma​​in.html 位于 html d 目录中,并且无法直接访问 server 中的 io。 js 这样。

如何解决?

【问题讨论】:

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

标签: jquery html node.js socket.io directory-structure


【解决方案1】:

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

&lt;script src="/socket.io/socket.io.js"&gt;&lt;/script&gt;

这会设置您的 io 变量,因此您可以使用它:

var socket = io();

更多信息和示例here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-20
    • 2018-04-24
    • 2016-10-30
    • 2012-03-18
    • 2015-11-16
    • 2011-05-22
    • 2014-12-16
    • 2022-01-23
    相关资源
    最近更新 更多