我使用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"出于某种原因。
有人有任何想法吗?
答案 0 :(得分:2)
从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在哪里标记为仅复制...
答案 1 :(得分:0)
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的草稿。