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

determining location of deprecation warning on 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)

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

我怎样才能找到有问题的代码?

弃用通知未显示对您代码的回溯,因为问题不在您的代码中。 :) 看一下 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);
};