2013-12-18 35 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

謝謝。我會進入,看看它是如何。我會將此標記爲答案,但可能會出現更多的問題。乾杯。 –