确定Ember.js上的弃用警告的位置

时间:2015-02-26 09:52:40

标签: debugging ember.js

我升级到Ember 1.18,我得到了:

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)

回溯都不是我的代码,我主要使用{link-to-animated}(明确没有currentWhen)。

如何找出有问题的代码?

1 个答案:

答案 0 :(得分:3)

弃用通知并未显示代码追溯,因为问题不在您的代码中。 :)看看ember-animated-outlet.js,您会发现currentWhen已在内部使用。

有一些肮脏的伎俩来遏制弃用警告,但我建议只是向回购提交一个拉动请求以改变它。这应该是一个相当容易的解决方案。

编辑:似乎有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);
};