jsHint бросает "Firebase" не определено предупреждение

как правильно определить Firebase, чтобы jshint перестал пищать.

Мой код работает ... просто jshint раздражает

app.js

 angular
  .module('morningharwoodApp', [
    'firebase',
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ngRoute',
    'ngSanitize',
    'ngTouch'

  ])

main.js

angular.module('morningharwoodApp')
  .controller('MainCtrl', function ($scope, $firebase) {
    // var Firebase;
    var pageRef = new Firebase('https://morningharwood.firebaseIO.com/page');
    // var pageRef = new Firebase('https://morningharwood.firebaseIO.com/page');


    //init
    $scope.pages = $firebase(pageRef);
    $scope.newPage = {
        title: '',
        slug: '',
        url: '',
        desc: '',
        active: false,
        template: [
            {
                type: ''
            }
        ],
        img: '',
        dateCreated: '',
        dateUpdated: ''

    };

    //CRUD

    //add
    $scope.addPage = function() {
        $scope.pages.$add($scope.newPage);
        $scope.newPage = '';
    };
  });

введите описание изображения здесь


person Armeen Harwood    schedule 22.07.2014    source источник
comment
Вы можете добавить /*global Firebase */ вверху файла.   -  person runTarm    schedule 22.07.2014
comment
Интересно ... добавление этого простого комментария вверху исправило это. Jshint должен сканировать комментарии?   -  person jcrowson    schedule 22.09.2014
comment
Вы также можете добавить его как константу Angular, а затем вставить Firebase везде, где вам это нужно: /* global window:false */ angular.module('myApp').constant('Firebase', window.Firebase);   -  person Scotty Waggoner    schedule 17.11.2015


Ответы (2)


Вы также можете сделать следующее в своем jshint.rc

 "jshint_options":
    {
        "predef": {
            "Firebase": false
        }
     }
person Nikos    schedule 22.07.2014
comment
Это правильный ответ. Или в более поздних версиях вы бы использовали predef вместо globals - person Kato; 22.07.2014
comment
@Kato, ваш комментарий кажется немного непонятным. Похоже, predef был удален. github.com/jshint/jshint/issues/1914 - person Scotty Waggoner; 11.09.2015
comment
@OzzieOrca, что это должно быть сейчас? - person Nikos; 11.09.2015
comment
Я тоже немного сбит с толку, но похоже, что Pref устарел или будет устаревшим. Это все еще в документации. Похоже, цель состоит в том, чтобы заменить predef на globals, но globals не имеет всех тех же функций, что и predef. Посмотрите stackoverflow.com/questions / 22551402 / и просмотрите все упомянутые проблемы на github.com/jshint/jshint / issues / 1914 - person Scotty Waggoner; 17.11.2015
comment
Прекрасно работает с globals: globals: {firebase: false} - person felansu; 14.03.2017

Поскольку предполагается, что Firebase добавляется к глобальному объекту (окну), вы можете использовать службу $window:

.controller('MainCtrl', function ($firebase, $scope, $window) {
    var pageRef = new $window.Firebase('...');
person gkalpak    schedule 22.07.2014
comment
лучше поставить firebase на rootcope? - person Armeen Harwood; 22.07.2014
comment
Я не вижу никакой пользы, но думаю, вы могли бы. Хотя jsHint, вероятно, снова будет жаловаться, если вы не используете $window.Firebase. - person gkalpak; 22.07.2014
comment
Я бы так не поступил. Было бы намного проще использовать указанную выше нотацию комментариев или глобальную опцию, упомянутую ниже. - person David East; 22.07.2014
comment
Firebase не следует включать таким образом в Angular. Это нарушает тесты и фиксации e2e. Вместо этого его следует включать с помощью обычного внедрения зависимостей. - person Kato; 22.07.2014
comment
@Kato: Как именно? Вот как они используют его в официальной демонстрации ( new Firebase(...)). Вопрос в том, как порадовать jsHint. @David: Я не понимаю, насколько он чище, но мне было бы очень интересно узнать (может, мне чего-то не хватает) :) - person gkalpak; 22.07.2014
comment
Я считаю, что гораздо проще исключить эту ошибку глобально, а не компенсировать ее в каждом экземпляре Firebase. - person David East; 23.07.2014