ReferenceError: Не могу найти переменную: io - PullRequest
0 голосов
/ 15 мая 2018

У меня есть следующая структура папок html каталог: i ndex.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 d и не имеет прямого доступа к io в server.js таким образом.

Как это решить?

1 Ответ

0 голосов
/ 15 мая 2018

Вам необходимо вставить эту строку в файл main.html:

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

Это устанавливает вашу переменную io, поэтому вы можете использовать ее:

var socket = io();

Более подробная информация и примеры здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...