Ember-CLI: Исправление для Ember не определено?

При использовании Ember-CLI и запущенном сервере ember я получаю следующую ошибку от JSLint:

[app_path]/filename.js: line 1, col 16, 'Ember' is not defined.

Добавление import Ember from 'ember'; исправляет это.

Это официальный способ обработки всех моих файлов? В документации это изменение пока не упоминается.


person Grapho    schedule 19.06.2014    source источник


Ответы (2)


ИЗМЕНИТЬ

От Стефана Пеннера:

Мы явно исключили его [Ember] [из файла .jshintrc], вместо этого импортируйте ember.

Мы планируем раскрывать все больше и больше углей как es6, когда-нибудь это позволит инструментам удалять части углей, которые вы не используете. В результате строятся меньшие по размеру.

Тем не менее, до этой даты, вероятно, вы сэкономите много хлопот, чтобы вставить его в .jshintrc.

УСТАРЕВШИЙ ОТВЕТ

В вашем .jshintrc файле (илиtests/.jshintrc) добавьте в глобальное пространство имен то, что вы не хотите определять в каждом модуле, к предопределенному объекту. Например:

{
  "predef": {
    "document": true,
    "window": true,
    "SprintStatusENV": true,
    "Ember": true, // Added
    "$": true, // ADDED
    "Modernizr": true // ADDED
  },
  "browser" : true,
  "boss" : true,
  "curly": true,
  "debug": false,
  "devel": true,
  "eqeqeq": true,
  "evil": true,
  "forin": false,
  "immed": false,
  "laxbreak": false,
  "newcap": true,
  "noarg": true,
  "noempty": false,
  "nonew": false,
  "nomen": false,
  "onevar": false,
  "plusplus": false,
  "regexp": false,
  "undef": true,
  "sub": true,
  "strict": false,
  "white": false,
  "eqnull": true,
  "esnext": true,
  "unused": true
}

В этом примере я определяю Ember (также можно определить Em), jQuery с помощью $ и Modernizr. Это остановит появление сообщений об ошибках jshint в терминале.

Это указано в документации ember-cli:

"Если вы хотите использовать внешние библиотеки, которые пишут в глобальное пространство имен (например, moment.js), вам необходимо добавить их в раздел предустановок файла .jshintrc вашего проекта и установить для него значение true. Если вы используете библиотеку в тестах , необходимо также добавить его в файл tests / .jshintrc ".

person Duncan Walker    schedule 27.06.2014
comment
Это полезно знать ... Интересно, почему «Ember» по умолчанию не используется? Похоже, его нужно часто использовать в приложении Ember ... нет? - person Grapho; 27.06.2014
comment
мы явно упустили его, вместо этого импортируйте ember. - person Stefan Penner; 31.08.2014
comment
@StefanPenner - спасибо за отзыв. Можете ли вы расширить рассуждения? Отредактирую свой ответ. - person Duncan Walker; 02.09.2014
comment
@DuncanWalker мы планируем раскрывать все больше и больше тлеющих углей как es6, когда-нибудь это позволит инструментам удалять части тлеющих углей, которые вы не используете. В результате строятся меньшие по размеру. - person Stefan Penner; 09.09.2014
comment
кроме того, этот ответ неверен. Это было явно удалено из jshint для поощрения лучших практик. - person Stefan Penner; 09.09.2014
comment
Я только что обновил приложение-аддон с 0.1.2 до 0.1.15 и не могу избавиться от этого «Ember» не определяется при запуске тестов, я импортировал Ember из «ember»; вверху start-app - person SuperUberDuper; 26.02.2015

Прямой импорт модулей Ember теперь кажется официальным способом. Документация Ember в разделе Использование модулей и резолвера теперь говорит о том, что вы должны прямо import Ember, если хотите использовать Ember и import DS для данных Ember.

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

person jluckyiv    schedule 20.06.2014
comment
позволяют создавать простые старые объектные файлы JavaScript - возможно, это то, что я делал ... также похоже, что это дополнение к документации было добавлено всего неделю назад, поэтому я не заметил его до сих пор . Благодарность! - person Grapho; 20.06.2014
comment
Я только что нашел новые документы сегодня утром. Я сам искал ответ, когда нашел ваш вопрос, поэтому решил, что отвечу. - person jluckyiv; 20.06.2014