Jquery ReferenceError:找不到变量:io
我有以下文件夹结构html目录:index.html、index.html、public/js目录:main.js、socket.js,根目录中有server.js 在server.js中,我设置socket.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
/********************* 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, '😀');
$('#messages').html(happyEmoji);
var sadEmoji = $('#messages').html().replace(/(\:\()/g, '😔');
$('#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文件中不可见。