2011-12-26 40 views
3

我正在使用socket.io 8.7。我使用Webstorm作爲IDE編寫我的網絡應用程序。使用名稱「in」的Socket.io使Webstorm IDE引發錯誤

Webstorm顯示我一個錯誤,當我寫這篇文章:

io.sockets.in("some room id").emit(...) 

Webstorm用紅色強調了in並說:「預計的名字」。 Webstorm中的結果將包含此代碼行的整個JavaScript文件顯示爲損壞的代碼文件。

有誰知道如何告訴Webstorm忽略這個錯誤?這是非常煩人的,因爲它涵蓋了真正的錯誤消息。

任何建議表示讚賞。

回答

2

,它的發生是因爲 「in」 是在JavaScript保留字。這是一個運營商:

if ("someString" in someObject) { 
    // someObject has a property called "someString" 
} 

換句話說,即「真正的錯誤」。現在,你可以做到這一點,如果你真的好想叫「中的」屬性/方法:

io.sockets['in']("some room id").emit(...) 
+0

我想io.sockets ['in'] ...現在會做。然後Webstorm不會抱怨,我仍然可以在socket.io中使用這些功能。如果socket.io首先不依賴保留字,本來會很好,但是感謝你的解決方案! – 2011-12-28 14:20:15

+0

這不是一個真正的錯誤。看到我的編輯如下。 – shesek 2011-12-30 05:47:53

3

發送錯誤報告他們tracker

編輯:不,這是不是一個錯誤與socket.io。在JavaScript中使用保留字作爲對象鍵沒什麼問題 - 保留字只保留爲標識符(變量/函數名),而不是其他任何地方。這是WebStorm IDE的一個錯誤,可能是因爲在其他語言中根本不允許使用保留字(實際上沒有理由這麼做)。

參考文獻:

+0

我認爲更好的解決辦法是,如果你嘗試報告發送到socket.io創作者:) – 2011-12-28 14:22:09

+0

在Internet Explorer 8或更高版本中,您會看到它被視爲錯誤。 – Pointy 2011-12-30 14:40:18

+0

......說,無論Internet Explorer 8或更早版本與socket.io是否相關都是一個公平點:-)然而,IDE可能不知道(也確實不能)知道某些代碼是否可能用於支持Internet資源管理器,它當然是一個很好的猜測。 – Pointy 2011-12-30 14:48:13