2011-12-26 1 views
3

Я использую socket.io 8.7. Я использую Webstorm как IDE для написания своего сетевого приложения.Socket.io, используя имя «in», делает ошибку WebEest IDE raise

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

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

WebStorm подчеркивает in с красным и говорит: «Предположительное имя». Результат в Webstorm, показывающий весь файл JavaScript, содержащий эту строку кода, в виде поврежденного файла кода.

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

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

ответ

2

Это происходит потому, что «в» является зарезервированным словом в 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 в первую очередь не полагался на зарезервированные слова, но спасибо за это решение! –

+0

Эта ошибка не является реальной ошибкой. См. Мои изменения ниже. – shesek

3

Отправить сообщение об ошибке их tracker

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

Ссылки:

  • ES5 specifications 7.6.1

    зарезервированное слово является ИмяИдентификатора, что не может быть использована в качестве идентификатора

  • Mozilla's MDN

    Зарезервированные слова на самом деле применяются только к идентификаторам

+0

Я думаю, что лучшим решением было бы отправить отчет в Socket.io создателя :) –

+0

Если вы попробуете в Internet Explorer 8 или старше вы увидите, что это рассматривается как ошибка. – Pointy

+0

... сказал, что если Internet Explorer 8 или более старый относится к socket.io, это справедливая точка :-). Однако IDE, вероятно, не знает (и действительно не может), может ли какой-то код быть предназначен для поддержки Интернета Explorer, и это, конечно, хорошая догадка, что так и будет. – Pointy