Socket.io 和 requirejs 依赖问题
Socket.io and requirejs dependency issue
我有这个带有两台服务器的遗留快递项目。我有这两个客户端文件:
requirejs.config({
baseUrl: '/js'
, paths: {
"jquery": "lib/jquery/jquery-2.1.1.min",
"socket.io" : "lib/socket/socket.io"
}
});
requirejs(['jquery', 'socket.io'],
function ($, io) {
console.log(io);
var socket = io('http://localhost:3000');
[....]
还有这个:
requirejs.config({
baseUrl: '/js/lib'
, paths: {
"ace": "ace/lib/ace"
, "bcsocket": "/channel/bcsocket"
, "shareJS": "sharejs/share"
, "sharejs_ace": "sharejs/ace"
, "ace_java": "ace/mode/java"
, "jquery": "jquery/jquery-2.1.1.min"
, "socket.io": "socket/socket.io"
}
, shim: {
"bcsocket": {
exports: "BCSocket"
}
, "shareJS": {
exports: "sharejs"
, deps: ["bcsocket"]
}
, "sharejs_ace": {
deps: ["ace/ace", "shareJS"]
}
, "ace_java": {
deps: ['ace/ace']
}
}
});
requirejs(['ace/ace', 'shareJS', 'bcsocket', 'sharejs_ace','jquery', 'socket.io'],
function(ace, sharejs) {
var editor = ace.edit('editor');
editor.setTheme('ace/theme/twilight');
editor.getSession().setMode('ace/mode/java');
var socket = io('http://localhost:3000');
console.log(socket)
socket.emit('hi');
[....]
问题是:我无法从第二个文件访问变量 io,只能访问第一个文件。即使我设法将所有依赖项和文件合并到一个中,socket.io 东西也会停止工作。
这种依赖关系在某种程度上是相互冲突的,我不知道该怎么做。
这是我的 package.json:
"dependencies": {
"express": "3.4.8",
"jade": "*",
"share": "^0.6.3",
"socket.io": "^1.3.5",
"connect": "*"
},
提前致谢
设法解决了我的问题:
requirejs([‘ace/ace’, ‘shareJS’, ‘bcsocket’, ‘sharejs_ace’,’jquery’, ‘socket.io’],
function(ace, sharejs, io) {
它正在将一个 bcsocket 变量传递给 io
所以当我改成
requirejs([‘ace/ace’, ‘shareJS’, ‘socket.io’, ‘bcsocket’, ‘sharejs_ace’,’jquery’],
function(ace, sharejs, io) {
然后将socket.io变量传递给io.
只是订单的问题。
我有这个带有两台服务器的遗留快递项目。我有这两个客户端文件:
requirejs.config({
baseUrl: '/js'
, paths: {
"jquery": "lib/jquery/jquery-2.1.1.min",
"socket.io" : "lib/socket/socket.io"
}
});
requirejs(['jquery', 'socket.io'],
function ($, io) {
console.log(io);
var socket = io('http://localhost:3000');
[....]
还有这个:
requirejs.config({
baseUrl: '/js/lib'
, paths: {
"ace": "ace/lib/ace"
, "bcsocket": "/channel/bcsocket"
, "shareJS": "sharejs/share"
, "sharejs_ace": "sharejs/ace"
, "ace_java": "ace/mode/java"
, "jquery": "jquery/jquery-2.1.1.min"
, "socket.io": "socket/socket.io"
}
, shim: {
"bcsocket": {
exports: "BCSocket"
}
, "shareJS": {
exports: "sharejs"
, deps: ["bcsocket"]
}
, "sharejs_ace": {
deps: ["ace/ace", "shareJS"]
}
, "ace_java": {
deps: ['ace/ace']
}
}
});
requirejs(['ace/ace', 'shareJS', 'bcsocket', 'sharejs_ace','jquery', 'socket.io'],
function(ace, sharejs) {
var editor = ace.edit('editor');
editor.setTheme('ace/theme/twilight');
editor.getSession().setMode('ace/mode/java');
var socket = io('http://localhost:3000');
console.log(socket)
socket.emit('hi');
[....]
问题是:我无法从第二个文件访问变量 io,只能访问第一个文件。即使我设法将所有依赖项和文件合并到一个中,socket.io 东西也会停止工作。
这种依赖关系在某种程度上是相互冲突的,我不知道该怎么做。
这是我的 package.json:
"dependencies": {
"express": "3.4.8",
"jade": "*",
"share": "^0.6.3",
"socket.io": "^1.3.5",
"connect": "*"
},
提前致谢
设法解决了我的问题:
requirejs([‘ace/ace’, ‘shareJS’, ‘bcsocket’, ‘sharejs_ace’,’jquery’, ‘socket.io’],
function(ace, sharejs, io) {
它正在将一个 bcsocket 变量传递给 io
所以当我改成
requirejs([‘ace/ace’, ‘shareJS’, ‘socket.io’, ‘bcsocket’, ‘sharejs_ace’,’jquery’],
function(ace, sharejs, io) {
然后将socket.io变量传递给io.
只是订单的问题。