socket.io - 的ReferenceError:IO没有定义(socket.io - Re

2019-06-27 03:07发布

我正在写为Android 2.3.5的应用程序(也将与iOS兼容)。 我希望将数据从应用程序的HTML / JavaScript的转移到Python程序的服务器(使用双绞线引擎检索数据)上。

我试过很多东西,看了各大论坛,解答,教程和网页 - 包括大部分在这里 - 并不能找到答案。 下面是相应的JavaScript我有我的index.html文件:

<script src="socket-lib/socket.io.js"></script>
<script type="text/javascript" charset="utf-8">
function sendData() {
    try {
        var socket = io.connect('http://mywebsite.com:12345');
        socket.on('connect', function(data) {
            socket.send('Hello.');
            socket.on('message', function (msg) {
                socket.send('This is where I send data?');
            });
        });
    }
    catch(err) {
        alert('ERROR: socket.io encountered a problem:\n\n' + err);
    }
} // end of sendData

如果你看不出来,我仍然很困惑是如何工作的; 我甚至不能测试任何东西。 那不断上来的错误是ReferenceError: io is not defined 。 有些网站使用类似var io = require('socket.io'); 。 但随后它导致了同样的错误: ReferenceError: require is not defined

我把插座lib文件夹中的资产/ WWW,其中任何其他JavaScript源应该去。 这也是index.html文件为。 许多网站使用<script src="/socket.io/socket.io.js"></script>但是这是没有意义的我。 许多网站还意味着使用Node.js的,但我从来没有看到它的任何地方。

我怎样才能使这项工作?

编辑回复:

我试了一下在Chrome中,这是给我一个Uncaught ReferenceError: require is not defined为socket.io.js文件。 所以,我决定权之前它require.js到源。 然后,它给出了错误Uncaught Error: Module name "socket.io-client" has not been loaded yet for context 。 由于我使用的不是这个,我不在乎。 当我尝试连接,但是,它给出了同样的io is not defined的错误。 当我把它定义为var io = require('socket.io')该错误是Error: Module name "socket.io" has not been loaded yet for context: _ http://requirejs.org/docs/errors.html#notloaded 。 我看了看网站,它并不能帮助我。 当我试图把“规定”作为函数的参数,出现另一个错误: TypeError: undefined is not a function

Answer 1:

我发现的人谁得到极大的可怕缺乏文档的困惑答案socket.io

你不能源/socket-lib/socket.io.js

你必须源http://yourwebsite.com:12345/socket.io/socket.io.js

服务器自动完成剩下的为您服务。



Answer 2:

我解决了它自己被改变的index.html导入插座IO从凉亭客户端,首先我安装了凉亭组件:

 bower install socket.io-client

然后我改变index.html中于参考:

 <script src="bower_components/socket.io-client/socket.io.js"></script>

LIB / socket.io客户端/距离/ socket.io.js - 或者文件可能被发现在



Answer 3:

当越来越socket.io使用许多其他图书馆合作require.js我有同样的错误,事实证明,因为试图从同一/ JS文件加载socket.io.js文件比其他的其余部分造成的文件。

将其放置在一个文件夹分开,固定对我来说,你可以看到代码,在这个要点 ,但所有我改变使其工作,是这样的:

代替:

socketio: 'socket.io',

使用:

socketio: '../socket.io/socket.io',

不知道这种行为的原因,但我希望它可以帮助你。



Answer 4:

编写服务器端代码socket.io.js文件,并尝试SRC =“/ socket.io/socket.io.js”

希望这将解决您的问题



Answer 5:

这看起来像你的浏览器无法找到socket.io.js文件。 您可以尝试在您的计算机与Firefox + Firebug的或Chrome网上应用开发者工具上打开index.html,然后看看js文件是怎么要求的。 在另一边,你可以检查服务于.js文件的Web服务器日志文件是否有任何文件中未发现的错误。

require的功能将通过例如提供RequireJS ,但你仍然需要的路径正确地配置您的脚本为它工作。



Answer 6:

我设法通过这个疏忽和浪费约一个小时,的东西,竟然是一个非常基本的错误。

如果没有定义的功能? 如“未捕获的ReferenceError:IO没有定义”。 这是否并不意味着该功能是越来越“拿来主义”之前,“创造”?

在我的HTML文件的一部分,“电话” JavaScript文件,它这样的:

<script src='./js/playerChatter.js'></script> <!-- this one calls io -->
<script src="http://localhost:2019/socket.io/socket.io.js"></script><!-- This Creates io -->

和我改成了这个

<script src="http://localhost:2019/socket.io/socket.io.js"></script> <!-- This Creates  io -->
<script src='./js/playerChatter.js'></script> <!-- this on calls io -->

所以,现在的项目“IO”,无论是对象或函数...其实就是越来越创建的习惯之前:d

玩得开心!



Answer 7:

对我来说,通过所有的非常有益的建议调试后,它竟然是简单的,我的节点服务器已经停止。 我一直在手动在终端窗口中开发运行它。

确保您的节点[yourservercode] .js文件中指定的端口上运行! : - ]



Answer 8:

我用JSPM。

补充一点:

import 'btford/angular-socket-io/mock/socket-io';


文章来源: socket.io - ReferenceError: io is not defined