Использование JSHint с Express.js / 'delete' (зарезервированное слово)

Я использую Express.js поверх Node.js для создания RESTful API и использую grunt для просмотра моих файлов и автоматической привязки моего JavaScript.

Каждый раз, когда я использую функцию удаления, JSHint отмечает ее:

[L218:C9] Expected an identifier and instead saw 'delete' (a reserved word).
app.delete('/api/users/:userid', function deleteUser(req, res, next) {

Я понимаю, что «удалить» - зарезервированное слово, но его выбрал Express.js! Есть ли лучший способ линтинга моего приложения Express.js? Любой способ отключить эту проверку ??


person Eric the Red    schedule 10.07.2012    source источник
comment
Проведя быстрый поиск, я считаю, что вы можете использовать для этого параметр es5.   -  person Alfred    schedule 11.07.2012


Ответы (3)


В Express.js используйте del вместо delete.

app.del('/api/users/:userid', function deleteUser(req, res, next)
person Bill    schedule 10.07.2012
comment
НЕ ИСПОЛЬЗУЙТЕ del больше! express устаревший app.del: используйте вместо этого app.delete - person joonas.fi; 26.10.2014

Другой способ решить эту проблему - использовать обозначение скобок вместо точечная нотация.

app['delete']('/api/users/:userid', function deleteUser(req, res, next) {
  /* function body */
});

Подобная работа была необходима в прошлом при работе с IndexedDB, который определяет как .delete, так и .continue методы.

В наши дни в таком обходном пути нет необходимости. Начиная с ES5 JavaScript позволяет использовать в именах свойств зарезервированные слова. Долгое время jsHint по умолчанию предполагал, что ваш код был ES3, но при запуске с версией 2.0.0 по умолчанию предполагается, что это ES5, и он не будет жаловаться на использование зарезервированных слов в качестве имен свойств.

person Useless Code    schedule 03.06.2013

В JSHint 1.1.x вы можете установить опцию es5 для jshint, и это позволит вам использовать зарезервированные слова в качестве свойств в соответствии со спецификацией ES5.

Начиная с JSHint 2.0 по умолчанию используется опция es5, и вам должно быть разрешено использовать зарезервированные слова в качестве свойств.

Для получения дополнительной информации перейдите на страницу http://www.jshint.com/docs/#options

person Juan Pablo Buritica    schedule 04.03.2013
comment
Это изменилось; начиная с версии 2.0.0, JSHint получил избавлен от параметра es5 и теперь предполагает, что код - это ES5, если иное не указано с помощью новых параметров es3 и esnext. - person Useless Code; 04.06.2013