[英]conflict dojo.require and Socket.io client
我使用dojo 1.8.6
和socket.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.