Angular-styleguide: لدى jshint مشاكل مع .catch

تم إنشاؤها على ٣١ يناير ٢٠١٥  ·  10تعليقات  ·  مصدر: johnpapa/angular-styleguide

إنني أقدر حقًا الفكر والجهود التي تم بذلها في دليل الأسلوب هذا.

أواجه مشكلات في استخدام 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);
      }

    }

عندما يتم تشغيل عملية النخر الخاصة بي ، أحصل على:
screen shot 2015-01-30 at 9 54 51 pm

الحل البسيط هو استخدام تدوين القوس (ew) لـ catch ، لكنني شخصياً أجد هذا غير مستحسن. حاولت توفير إعدادات .jshintrc الموصى بها ولكن لم يحالفني الحظ. قد يتطلب هذا توضيحًا بسيطًا ، ولكن قد يكون خطأ المستخدم من جانبي أيضًا.

شكرا!

help wanted

التعليق الأكثر فائدة

عجيب. لم أحصل على هذا. النسخة القديمة من jshint؟

قد تبحث هنا: http://jslinterrors.com/uable-an-identifier-and-instead-saw-aa-reserved-word/

يقترح إما توجيهات /*jshint es5: true */ أو /*jshint -W024 */ .

لكن مثل جون لم أضطر أبدًا إلى فعل أي شيء مميز.

ال 10 كومينتر

أنا لا أرى ذلك ... هل قمت بفحصه مقابل قواعد jshintrc التي قدمتها في repos الخاص بي؟

حاولت استخدام إعدادات JSHint المتوفرة في قسم JSHint ، والتي تبدو هي نفسها في مشروع ng-demos / modular ، لكنني ما زلت أتلقى نفس الخطأ. إذا كانت هذه هي نفس الإعداد الذي تستخدمه ، فأنا لست متأكدًا من سبب تلقي هذا الخطأ وأنت لست متأكدًا.

بعد النظر عن كثب إلى خيارات JSHint ، تم إصلاح الإعداد es5 على true لي.

من المستندات:

This option enables syntax first defined in the ECMAScript 5.1 specification. This includes 
allowing reserved keywords as object properties.

إذا كان هذا شيئًا تشعر أنه يضيف قيمة ، يمكنني إرسال إعلان عام ، لكنني متردد قليلاً لأنك لا تواجه نفس السلوك. هناك الكثير من الأفكار الرائعة في دليل الأسلوب هذا. لقد استفدت منه كثيرًا. لذا شكرا لجعل هذا العام. مقدر جدا.

نعم ، هذا غريب ... لم ألق نظرة عميقة عليه ، لكني لا أحصل على أية مشكلات عندما أنسخ الكود الخاص بك بالضبط في المحرر الخاص بي ولا أضع إعداد 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/uable-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(){...});
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات