Socket.io, использующий имя «in», заставляет Webstorm IDE вызывать ошибку - PullRequest
3 голосов
/ 26 декабря 2011

Я использую socket.io 8.7. Я использую Webstorm в качестве IDE для написания своего сетевого приложения.

Webstorm показывает мне ошибку, когда я пишу это:

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

Webstorm подчеркивает in красным и говорит "имя ожидается". В результате в Webstorm весь файл JavaScript, содержащий эту строку кода, отображается в виде неработающего кода.

Кто-нибудь знает, как заставить Webstorm игнорировать эту ошибку? Это очень раздражает, поскольку охватывает реальные сообщения об ошибках.

Любые предложения приветствуются.

Ответы [ 2 ]

3 голосов
/ 26 декабря 2011

Отправить отчет об ошибке на их трекер

Редактировать : Нет, это , а не ошибка с socket.io. Нет ничего плохого в использовании зарезервированных слов в качестве ключей объекта в JavaScript - зарезервированные слова зарезервированы только как идентификаторы (имя переменной / функции), а не где-либо еще. Это ошибка в IDE WebStorm, возможно, из-за того, что обычно не разрешают зарезервированные слова вообще на других языках (что на самом деле нет причин делать).

Ссылки:

2 голосов
/ 26 декабря 2011

Это происходит потому, что "in" - это зарезервированное слово в JavaScript.Это оператор:

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

Другими словами, является «настоящей ошибкой».Теперь вы можете сделать это, если вы действительно хотите свойство / метод с именем "in":

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