2

我正在使用一个M由 browserify 创建的模块(比如 ),它包括 socket.io 客户端作为依赖项。M在 AMD 应用程序中使用。Inside said app, when Missues a connect call to the socket client, and when the chosen transport is jsonp-polling, attempting to execute the jsonp callback throws a ReferenceError: io is undefined. 这对我来说非常有意义,因为io它不是全局的,而是包裹在 moduleM中。

所以我的问题是,是否io 必须存在于全球范围内?有没有办法使这项工作能够在不添加io到全局范围的情况下访问回调数组?

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

4

1 回答 1

3

不,它不必在全局命名空间中,但它需要一些工作,并且您不能使用在 github 项目的根目录中找到的预构建文件。

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

然而,一切都没有丢失!变身救人……

https://github.com/eugeneware/decomponentify

使用此转换,您可以像使用任何其他启用了 browserify 的模块一样在 browserify 中使用它构建的模块component(1)require()阅读文档以了解使用情况。

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

于 2013-12-18T19:26:45.817 回答