javascript - 引用 socket.io 时的错误

标签 javascript node.js express socket.io

我正在尝试构建一个具有聊天功能的快速应用程序,但 socket.io 无法正常工作,它提供了未捕获的引用 please see an image of error here 运行服务器时出错。

在 www 文件中

var server = http.createServer(app);
require('../socket-server')(server);

在 socket-server.js 文件中

'use strict'

var socketIO = require('socket.io');

module.exports = function(server) {
    console.log("success");
    var io = socketIO(server);
    io.on('connection', (socket) => {
        socket.on('chatMessage', (data) => {
            io.emit('chatMessage', data);
        });
    });
}

在task.hbs文件中

<div>
    <div class="row">
        <div class="col-md-8">
            <textarea id="code-screen"></textarea>
        </div>
        <div class="col-md-4" id="chatbox">
            <div class="panel panel-primary">
                <div class="panel-heading">
                    CHAT ROOM
                    <span class="pull-right" id="chatbox-username">
                        {{#if user}}
                            {{user.name}}
                        {{/if}}
                    </span>
                </div>
                <div class="panel-body">
                    <ul class="media-list" style="height: 300px; overflow-y: scroll" id="chatbox-listMessages">

                    </ul>
                </div>
                <div class="panel-footer">
                    <div class="input-group">
                        <input type="text" class="form-control" placeholder="Enter The Message" id="userMessage">
                        <span class="input-group-btn">
                            <button type="button" id="chatButton" class="btn btn-primary">SEND</button>
                        </span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.48.4/codemirror.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.48.4/mode/javascript/javascript.min.js"></script>

{{!-- <script src="../node_modules/socket.io/lib/socket.js"></script> --}}
<script src="/socket.io/socket.io.js"></script>

<script>

    var socket = io.connect('http://localhost:3000');
    var editor = CodeMirror.fromTextArea(document.getElementById('code-screen'), {
        lineNumbers: true,
        theme: 'material'
    });

    var username = $("chatbox-username").val();
    if(username === "") {
        var userId = Math.floor(Math.random() * 9999).toString();
        username = "User" + userId;
        $(#chatbox-username).text(username);
    }

    var userMessage = function(name, text) {
        return ('<li class = "media"> <div class = "media-body"> <div class = "media">' + 
            '<div class = "media-body"/>' + 
            '<b>' + name + '</b> : ' + text + '<hr/> </div> </div> </div> </li>'
            );
    };

    document.getElementById('chatButton').addEventListener("click", sendMessage);

    function sendMessage() {
        var userMessage = $(#userMessage).val();
        socket.emit('chatMessage', { message: userMessage, username: username });
        $('#userMessage').val("");
    };

    socket.on('chatMessage', (data) => {
        $('#chatbox-listMessages').append(userMessage(data.username, data.message));
    });
</script>

我应该如何引用/socket.io/socket.io.js文件,以便可以引用脚本中的io变量。

最佳答案

替换

$(#chatbox-username).text(username);

$('#chatbox-username').text(username);

关于javascript - 引用 socket.io 时的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59445412/

相关文章:

javascript - 算法:如何划分网格列宽(如google-chrome)

JavaScript (node.js) : unit testing code that fires multiple events

javascript - 为什么我的 rxjs combineLatest 输出只有 2 次?

javascript - 如何在node js中发出多个请求

javascript - 使用 reactJs 和 NodeJs 发出 http post 请求

node.js - 将 express-busboy 限制在特定路线

javascript - 从 Mongoose 模型传递嵌套的 JSON 数据不起作用

javascript - Nodejs如何检查一个地址是否是环回地址

javascript - 在 express 中设置静态 javascript 文件的内容类型

javascript - Node .js。如何从 html 调用本地文件