javascript - Socket.io 和 requirejs 依赖问题

标签 javascript node.js socket.io requirejs ace-editor

我有一个带有两台服务器的旧版 Express 项目。我有这两个客户端文件:

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。

这只是订单问题。

关于javascript - Socket.io 和 requirejs 依赖问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31416868/

相关文章:

javascript - 如何为所有 res.json() 表达添加时间戳

security - Node.js 泄漏路径信息,如何解决?

node.js - 使用node.js、express、socket实现通知系统

socket.io - 在 socket.io 上仅使用 xhr 轮询

java - 无法访问从 FTL 文件中的 modelmap 发送的对象列表

javascript - 如何获得漂亮的 URL - Node.JS

java - JSF Phase Listener 重定向表单不是 iframe

javascript - 处理 Jquery 模板中的特殊字符

node.js - 如何在EJS中访问静态js文件?

node.js - 观察者在 Angular 2中使用socket.io创建多条消息