javascript - Uncaught ReferenceError : io is not defined

标签 javascript node.js express socket.io

<分区>

我知道这是一个在这里讨论过很多次的错误。但是在通过谷歌找到一些帖子后,它仍然没有解决我的问题。

当我尝试在我的 index.html 中包含 io javascript 时出现上述错误。

我试过: <script src="http://localhost:8080/socket.io/socket.io.js"></script><script src="/socket.io/socket.io.js"></script>

甚至尝试将端口切换到 3000。问题仍然存在。

我已经尝试使用 npm install socket.io 重新启动我的 app.js 并重新安装 socket.io(尽管它在我的包中) .我看到在我的 node_modules 文件夹中创建了一个 socket.io 文件夹。

我按如下方式启动我的服务器:

var express = require('express');

var app = express(), 
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

app.listen(8080);

而且我的索引还从 Google 加载了最新的 jQuery:<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>

当我重新启动 app.js 时,我的终端显示 socket.io 已启动:

23 Jun 13:31:56 - [nodemon] starting `node app.js`
   info  - socket.io started

我的 index.html 总计(我从教程中重新输入/改造了它:http://psitsmike.com/2011/09/node-js-and-socket-io-chat-tutorial/)

<script src="http://localhost:8080/socket.io/socket.io.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>

<script>

    var socket = io.connect();

    socket.on('connect', function() {
        socket.emit('adduser', prompt("Hoe heet je?"));
    });

    socket.on('updateChat', function(username, data) {
        $('#conversation').append('<strong>' + username  + '</strong> says: ' + data + '<br>');
    });

    socket.on('updateUsers', function(data) {
        $('#users').empty();
        $.each(data, function(k, v) {
            $("#users").append('<div>' + k + '</div>');
        });
    });

    $(document).ready(function() {
        $('#datasend').click(function() {
            //get the message and empty the input
            var msg = $('#data').val();
            $('#data').val('');

            //Let the server execute sendchat along with the msg
            socket.emit("sendChat", msg);
        });

        //ENTER key
        $('#data').keypress(function(e) {
            keyCode = (e.keyCode ? e.keyCode : e.which);
            if (keycode == 13) {
                $(this).blur();
                $('#datasend').focus().click();
            }
        });
    });

</script>
<div style="float:left;width:100px;border-right:1px solid black;height:300px;padding:10px;overflow:scroll-y;">
    <b>USERS</b>
    <div id="users"></div>
</div>
<div style="float:left;width:300px;height:250px;overflow:scroll-y;padding:10px;">
    <div id="conversation"></div>
    <input id="data" style="width:200px;" />
    <input type="button" id="datasend" value="send" />
</div>

最佳答案

在你的代码中,改变这个

app.listen(8080);

为此

server.listen(8080);

关于javascript - Uncaught ReferenceError : io is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17260345/

相关文章:

node.js - (Jade & Stormpath) 仅在特定用户访问页面时显示某些 HTML 元素

node.js - 由于 Node js 内存不足,NPM 命令显示中止消息

javascript - 如何从我的 html 文件移动到另一个 html 文件以创建 iOS 混合应用程序?

c# - 访问 javascript 文件中的模型属性?

javascript - 无法使用 puppeteer 从图像列表中获取 url

node.js - 使用多个 npm 注册表和用户帐户

javascript - 创建需要 jQuery 的可嵌入 JS,如何不覆盖现有 jQuery

javascript - 是否可以在动态添加的文本输入上全局捕获 keydown?

Node.js - Azure - Socket.io - 为什么我用完了并发套接字?

node.js - GraphQL-js Node/Express : How to pass a stringed object in a GraphQL Query?