繁体   English   中英

dojo.require和Socket.io客户端冲突

[英]conflict dojo.require and Socket.io client

我使用dojo 1.8.6socket.io 0.9.16 ,在加载socket.io.js client ,发生了dojo.require冲突,无法再加载任何dojo模块。

require([ 'socket.io/socket.io' ])导致错误。

TypeError:无法读取未定义的属性“ push”

由于某种原因,我无法使用“ dojox / socket”。

有人知道吗

从dojo 1.11开始,以下工作正常:

packages: [
    "dojo",
    {name: "socketio", location: "/socket.io", main: "socket.io"}
]

与模块加载:

define([
    "socketio"
], function (socketio) { 
    var socket = socketio();
});

我认为它也可以在以前的版本中工作,但我尚未对其进行测试。

或者,您可以直接引用socket.io模块,因为它符合AMD标准。

define([
    "/socket.io/socket.io.js"
], function (socketio) { 
    var socket = socketio();
});

不幸的是,构建器仍然报告311错误(缺少相关性),因此没有破坏构建。 无法解决此问题,因为没有package.js在其中标记为仅复制...

require语句必须是有效的AMD mid(模块标识符)。

通常,人们会将软件包添加到他们的配置中,例如:

var dojoConfig = {
    packages: [
        {name: 'socketio', location: 'path/to/socket.io/socket.io'}
    ]
}

然后要求它:

require(['socketio'], function (socketio) {
    // do something with socketio
});

至于为什么不能使用dojox / socket,我看不到任何要评论的代码。 您可能还想查看https://github.com/bryanforbes/tube ,这是dojox / socket的替代草案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM