2015-02-26 2 views
1

я повышен до Эмбер 1.18, и я получаю:определения местоположения предупреждения устаревания на ember.js

DEPRECATION: Using currentWhen with {{link-to}} is deprecated in favor of `current-when`. 
     at Ember.LinkView.EmberComponent.extend.init (http://example.com:8000/static/assets/vendor.js:33811:15) 
     at apply (http://example.com:8000/static/assets/vendor.js:32885:32) 
     at superWrapper [as init] (http://example.com:8000/static/assets/vendor.js:32459:15) 
     at apply (http://example.com:8000/static/assets/vendor.js:32885:32) 
     at new Class (http://example.com:8000/static/assets/vendor.js:47485:9) 
     at Function.Mixin.create.create (http://example.com:8000/static/assets/vendor.js:47943:16) 
     at CoreView.extend.createChildView (http://example.com:8000/static/assets/vendor.js:56278:23) 
     at Object.merge.appendChild (http://example.com:8000/static/assets/vendor.js:54369:26) 
     at CoreView.extend.appendChild (http://example.com:8000/static/assets/vendor.js:56161:34) 

Ни один из TRACEBACK не мой код, и я в основном с помощью {link-to-animated} (без currentWhen явно) ,

Как я могу выяснить, где найти проблемный код?

ответ

3

Уведомление об устаревании не отображает трассировку вашего кода, потому что проблема не в вашем коде. :) Посмотрите на ember-animated-outlet.js, и вы увидите, что currentWhen используется внутри.

Существует несколько грязных трюков, чтобы заставить замолчать предупреждения об утомлении, но я бы предложил просто отправить запрос на возврат к репо, чтобы он изменился. Это должно быть довольно легко исправить.

EDIT: Кажется, есть already a pull request for that, но он еще не объединен. Итак, о тех грязных трюках ... Если вы прослушиваете предупреждение об устаревании, вы всегда можете переопределить Ember.deprecate. Поместите следующее где-нибудь, прежде чем ваш код приложения будет запущен (возможно, в сценарии поставщика):

var oldDeprecate = Ember.deprecate; 
Ember.deprecate = function(message) { 
    if (message.indexOf('currentWhen') >= 0) { 
     return; 
    } 

    return oldDeprecate.apply(this, arguments); 
}; 
+0

Спасибо. Я добрался до этой точки в коде, но мое исправление было неправильным ... Есть ли способ, чтобы я мог понять, что это из-за эмоции, отличной от моей головы? (более методичный способ - это то, на что мой первоначальный вопрос был) – Boaz

+0

Единственный лучший способ, который я знаю, - использовать функцию новой усталости инспектора Ember. Тем не менее, это даст вам ту же трассировку стека, которую вы видите на консоли. Если в вашем коде устаревает, то в трассировке стека будет довольно легко заметить. К сожалению, если проблема связана с библиотечным кодом, нет никаких лучших способов, чем просто проверка местоположений трассировки стека, поиск файла и критическое мышление. – GJK

+0

спасибо. Кстати - странно ... после исправления кода я все равно получаю предупреждение. И установка точки останова на линии в хром-отладчике не получает exexuted. Любые идеи WTF? – Boaz

Смежные вопросы