2013-12-18 1 views
2

Я использую модуль (скажем M), созданный браузером, который включает в качестве зависимости клиент socket.io. M используется внутри приложения AMD. Внутри приложения, когда M выдает вызов соединения с клиентом сокета, и когда выбранный транспорт является jsonp-опросом, попытка выполнить обратный вызов jsonp вызывает ReferenceError: io is undefined. Это имеет для меня прекрасный смысл, поскольку io не является глобальным, вместо этого он обернут внутри модуля M.Должен ли клиент socket.io существовать в глобальной области?

Так что мой вопрос: ioесть, чтобы существовать в глобальном масштабе? Есть ли способ сделать эту работу, с помощью которой можно получить доступ к массиву обратного вызова без добавления io в глобальную область?

Отказ от ответственности - Я ценю, что я не представил какой-либо пример кода, но я изо всех сил пытаюсь сформировать подходящий пример, который будет легко реализовать и запустить. Если вопрос действительно не имеет смысла, пожалуйста, дайте мне знать, и я посмотрю, смогу ли я что-то собрать вместе, но если кто-нибудь подумает, что они могут ответить на него, или указать мне в правильном направлении, не видя никакого кода, пожалуйста, сделайте !

ответ

3

Нет, он не обязательно должен находиться в глобальном пространстве имен, но он требует некоторой работы, и вы не можете использовать предварительно построенный файл, найденный в корневом каталоге проекта github.

Вы должны построить проект socketio-client из источника. Единственная проблема заключается в том, что проект построен с использованием component.js, простого менеджера пакетов на стороне клиента, созданного великим TJ Hallowaychuck. Проблема, с которой вы столкнетесь, заключается в том, что когда компонент построен с component(1), он поставляется с собственной реализацией функции require(), которая конкурирует в глобальном пространстве имен с собственной реализацией браузера.

Все не потеряно, однако! Превращает на помощь ...

https://github.com/eugeneware/decomponentify

Используя это преобразование, вы можете потреблять модуль, построенный component(1) и require() его внутри browserify, как и любой другой модуль включен browserify. Прочтите документы для использования.

Да, я тоже жду дня для стандартизации в управлении пакетами на стороне клиента.

+0

Спасибо. Я займусь этим и посмотрю, как это происходит. Я отмечу это как ответ, но может возникнуть больше вопросов, которые возникают. Приветствия. –

Смежные вопросы