Ошибка 'момент' не определена no-undef в ember.js

1

Я создаю приложение, часы с часовым поясом, случается, что он дает эту ошибку, и я не могу это исправить, я также являюсь инициатором, и у меня нет большого опыта, появляется домашняя страница, где выбраны часы, но страница, где будет часовой пояс. Это пустое, я жду помощи, спасибо!

  • ember-cli: 2.13.1
  • node: 6.0.0
  • os: linux x64

"Не удалось запустить сторож Посетите https://ember-cli.com/user-guide/#watchman для получения дополнительной информации.
Сервер Livereload на http://localhost: 49153 "инструмент" импортируется из внешнего модуля "ember-data / -debug", но никогда не использовался

app/controllers/clock.js
14:36  error  'moment' is not defined  no-undef
18:27  error  'moment' is not defined  no-undef
25:15  error  'moment' is not defined  no-undef

 3 problems (3 errors, 0 warnings)


app/controllers/timezones.js
7:23  error  'moment' is not defined  no-undef
9:19  error  'moment' is not defined  no-undef
10:21  error  'moment' is not defined  no-undef

 3 problems (3 errors, 0 warnings)


Build successful (4919ms) – Serving on http://localhost:4200/



Slowest Nodes (totalTime => 5% )              | Total (avg)         
----------------------------------------------+---------------------
Babel (17)                                    | 1460ms (85 ms)      
Rollup (1)                                    | 1214ms              
EslintValidationFilter (2)                    | 835ms (417 ms)      
Concat (8)                                    | 585ms (73 ms)       
TreeMerger (allTrees) (1)                     | 312ms'               

приложение/контроллеры/timezones.js

import Ember from 'ember';

export default Ember.Controller.extend({
/* create array of timezones with name & offset */
init: function() {
    var timezones = [];
    for (var i in moment.tz._zones) {
      timezones.push({
        name: moment.tz._zones[i].name,
        offset: moment.tz._zones[i].offsets[0]
      });
    }
    this.set('timezones', timezones);
    this._super();
  },
  selectedTimezone: null,
  actions: {
    /* save a timezone record to our offline datastore */
    add: function() {
      var timezone = this.store.createRecord('timezone', {
        name: this.get('selectedTimezone').name,
        offset: this.get('selectedTimezone').offset
      });
      timezone.save();
    },        
    /* delete a timezone record from our offline datastore */
    remove: function(timezone) {
      timezone.destroyRecord();
    }
  }
});

приложение/контроллеры/clock.js

import Ember from 'ember';

export default Ember.Controller.extend({
init: function() {
    // Update the time.
    this.updateTime();
},

updateTime: function() {
    var _this = this;

    // Update the time every second.
    Ember.run.later(function() {
        _this.set('localTime', moment().format('h:mm:ss a'));

        _this.get('model').forEach(function(model) {
            model.set('time',
                      moment().tz(model.get('name')).format('h:mm:ss 
a'));
        });

        _this.updateTime();
    }, 1000);
},

localTime: moment().format('h:mm:ss a')
});

приложение/модель/timezone.js

import DS from 'ember-data';

export default DS.Model.extend({
name: DS.attr('string'),
offset: DS.attr('number')
});

приложение/маршруты/clock.js

import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
    return this.get('store').findAll('timezone');
}
});

приложение/маршруты/timezones.js

import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
    return this.get('store').findAll('timezone');
}
});

Если вам нужно больше файлов, просто поговорите

  • 2
    как ты импортируешь момент?
  • 0
    Похоже, вы импортируете момент через bower, который добавляет глобальную переменную moment в ваш проект. Проект состоит в том, что линтер не знает, что эта переменная существует, поэтому вы должны сказать ей, что она существует .
Теги:
datetime
ember.js

1 ответ

6
Лучший ответ

Вы получаете эти ошибки, потому что вы используете глобальный ES Lint, о котором не известно. Поскольку @locks говорится в комментариях, вам нужно добавить moment как глобальный в конфигурацию ES Lint:

{
  "globals": {
    "moment": true
  }
}

Или вы можете указать глобальный в своих файлах как комментарий:

приложение/контроллеры/clock.js

import Ember from 'ember';
/* global moment */

export default Ember.Controller.extend({
  //your code
});

Если вам удастся использовать либо ember-moment, либо ember-cli-moment-shim, вы можете просто импортировать момент глобального:

приложение/контроллеры/clock.js

import Ember from 'ember';
import moment from 'moment';

export default Ember.Controller.extend({
  //your code
});
  • 0
    /* globals moment */ вместо /* moment */
  • 0
    @kumkanillam: Ах, спасибо! NB это /* global moment */ без s : P.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню