Я очень ценю мысли и усилия, вложенные в это руководство по стилю.
У меня возникают проблемы с использованием jshint и некоторых примеров, используемых в руководстве. Например:
function getCategories() {
return $http.get(env + 'api/feeds/', {cache: true})
.then(getCategoriesComplete)
.catch(getCategoriesFailed);
function getCategoriesComplete(response) {
return response;
}
function getCategoriesFailed(error) {
console.log(error.data);
}
}
Когда мой процесс ворчания запускает jshint, я получаю:
Простой обходной путь - использовать скобки (ew) для catch
, но я лично считаю это сомнительным. Я попытался предоставить рекомендуемые настройки .jshintrc
, но безуспешно. Это могло бы потребовать небольшого пояснения, но это также могло быть ошибкой пользователя с моей стороны.
Спасибо!
Я этого не вижу ... вы проверяли это на соответствие правилам jshintrc, которые я предоставил в своих репозиториях?
Я попытался использовать настройки JSHint, представленные в разделе JSHint , которые выглядят так же, как в проекте ng-demos / modular, но я все равно получал ту же ошибку. Если это тот же параметр, который вы используете, я не уверен, почему я получаю эту ошибку, а вы - нет.
Посмотрев немного ближе в Options JSHint , то ES5 Настройка набора в true
фиксированной это для меня.
Из Документов:
This option enables syntax first defined in the ECMAScript 5.1 specification. This includes
allowing reserved keywords as object properties.
Если вы считаете, что это добавляет ценности, я могу отправить PR, но я немного сомневаюсь, так как вы не испытываете такого же поведения. В этом руководстве по стилю так много замечательных идей. Я извлек из этого массу пользы. Так что спасибо за то, что сделали это достоянием общественности. Очень признателен.
Да, это странно ... Я не рассматривал это глубоко, но у меня не возникает никаких проблем, когда я копирую ваш точный код в свой редактор, и я вообще не устанавливаю настройку es5. Давайте пока оставим это открытым и посмотрим, поймут ли это другие.
закрытие из-за того, что никто не видел этого
Я только что столкнулся с той же проблемой.
Мой код:
function (credentials) {
return DataService.login(credentials)
.then(loginSuccess)
.catch(loginError);
function loginSuccess(response) {}
function loginError(response) {}
}
Моя grunt
конфигурация:
jshint: {
src: [
'<%= app_files.js %>'
],
options: {
curly: true,
immed: true,
newcap: true,
noarg: true,
sub: true,
boss: true,
eqnull: true,
debug: true
},
globals: {}
},
Версия плагина jshint
:
{
"name": "grunt-contrib-jshint",
"version": "0.4.3",
...
}
Вы пропустили «используйте строгое»; ?
@wardbell нет, 'use strict;'
не пропало.
Странный. Я не понимаю этого. Старая версия jshint?
Вы можете посмотреть здесь: http://jslinterrors.com/expected-an-identifier-and-instead-saw-aa-reserved-word/
Он предлагает директивы /*jshint es5: true */
или /*jshint -W024 */
.
Но, как и Джон, мне никогда не приходилось делать ничего особенного.
Установка es5: true
решила мою проблему. Бесконечно благодарен!
По поводу версий. Я использую grunt-contrib-jshint 0.4.3
, который использует jshint 1.1.0
.
@johnpapa Я знаю, что это закрытая проблема, но я заметил, что в пакете ASP.NET MVC также есть проблемы, когда _.catch_ выдает ошибку и фактически не указывает на код.
Как выглядит получившаяся связка:
/* Minification failed. Returning unminified contents.
(514,18-23): run-time error JS1137: 'catch' is a new reserved word and should not be used as an identifier: catch
...
*/
(all the code here without being minified)
Возможное решение - изменить стили Y035 и Y060, чтобы использовать обычные обещания, описанные в официальных документах AngularJS:
$http(req).success(function(){...}).error(function(){...});
Самый полезный комментарий
Странный. Я не понимаю этого. Старая версия jshint?
Вы можете посмотреть здесь: http://jslinterrors.com/expected-an-identifier-and-instead-saw-aa-reserved-word/
Он предлагает директивы
/*jshint es5: true */
или/*jshint -W024 */
.Но, как и Джон, мне никогда не приходилось делать ничего особенного.