我一直在尝试使用 RequireJS 将 Socket.io 加载到我的应用程序中,但它只是不断给出错误。
使用的版本:
- 节点JS : 0.10.17
- Socket.io:0.9.16 _
- Socket.io 客户端: 0.9.16
- 要求JS: 2.1.8
尝试的解决方案:
索引.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
});
文件.js
define(["socket"],
function(io){
// Socket started here
在使用 RequireJS 套接字之前工作。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 文件的修改副本,根据解决方案 2 更改了第 107 行(请参阅链接),虽然这可行,但它不是真正的解决方案。所以我会保持这个问题的开放性。
我也尝试过将 SocketIO 的源添加为普通的 JS 文件,并在 RequireJS 中删除对它的所有引用,但它似乎仍然不兼容。