2013-12-18 108 views
2

我正在使用由browserify创建的模块(说M),它包含作为socket.io客户端的依赖项。在AMD应用程序中正在使用M。在上述应用程序中,当M向套接字客户端发出连接调用,并且当所选传输是jsonp轮询时,尝试执行jsonp回调将引发ReferenceError: io is undefined。这对我来说非常有意义,因为io不是全局的,而是被包装在模块M中。socket.io客户端是否必须存在于全局范围内?

所以我的问题是,io是否有存在于全局范围内?有没有办法让这个工作可以在不向全局范围添加io的情况下访问回调数组?

免责声明 - 我很欣赏我没有提供任何示例代码,但我正在努力形成一个合适的模拟示例,它很容易实现和运行。如果这个问题确实没有任何意义,那么请让我知道,我会看看我是否可以把一些东西放在一起,但如果有人认为他们可以回答它,或者没有看到任何代码指向正确的方向,请做!

回答

3

不,它不必位于全局名称空间中,但它需要一些工作,而且不能使用github项目根目录中的预构建文件。

您应该从源代码构建socketio-client项目。唯一的问题是该项目是使用component.js构建的,这是由TJ Hallowaychuck创建的一个简单的客户端软件包管理器。您遇到的问题是,当组件使用component(1)构建时,它将自带实现require()函数,该函数在全局名称空间中与browserify自己的实现竞争。

然而,所有不会丢失!转变救援...

https://github.com/eugeneware/decomponentify

使用这种转换,就可以消耗内browserify通过component(1)require()它建成像任何其他browserify启用模块的模块。阅读文档的使用情况。

是的,我也等待一天在客户端包管理的标准化。

+0

谢谢。我会进入,看看它是如何。我会将此标记为答案,但可能会出现更多的问题。干杯。 –