【发布时间】:2013-10-20 11:35:50
【问题描述】:
我一直在尝试使用 RequireJS 将 Socket.io 加载到我的应用程序中,但它总是报错。
使用的版本:
- NodeJS: 0.10.17
- Socket.io: 0.9.16
- Socket.io-client: 0.9.16
- RequireJS: 2.1.8
尝试的解决方案:
index.html
require.config({
shim: {
'socketio': {
exports: 'io'
},
},
wrap: false,
paths: {
socket: '/socket.io/socket.io',
jquery: "jquery-2.0.3.min",
// Other dependencies
}
});
require(["open_rpg"],function(OpenRPG){
// App code here
});
file.js
define(["socket"],
function(io){
// Socket started here
在使用 RequireJS 之前,socket 工作正常。 Socket JS 文件已正确加载。
输出:
Uncaught TypeError: Cannot call method 'push' of undefined
我尝试将 Socket.io 加载为普通的 JS 脚本,并使用:
paths:
"socket.io": 'empty:'
但是返回:
Uncaught Error: Mismatched anonymous define() module: function () { return io; }
更新: 由于 NodeJS 保留模块缓存,我添加了 Socket.io.js 文件的修改副本,第 107 行根据解决方案 2 进行了更改(请参阅链接),尽管这可行,但它不是真正的解决方案。所以我会保持这个问题的开放性。
我也尝试过将SocketIO的源添加为普通的JS文件,并在RequireJS中删除对它的所有引用,但它似乎仍然不兼容。
【问题讨论】:
标签: node.js requirejs socket.io