【问题标题】:finding source of deprecation errors查找弃用错误的来源
【发布时间】:2015-07-08 18:21:44
【问题描述】:

我刚刚升级到 Ember 1.13.3 和 Ember Data 1.13.5,现在我看到了一些弃用警告消息。具体来说,我看到以下消息:

Ember.keys is deprecated in favor of Object.keys

随着该消息,我看到以下跟踪:

 at Object._emberMetalCore.default.deprecateFunc [as keys] (http://localhost:3000/assets/frontend/vendor.self.js?body=1:16037:34)
        at Ember.DefaultResolver.extend.knownForType (http://localhost:3000/assets/frontend/vendor.self.js?body=1:68044:30)
        at Function.knownForType (http://localhost:3000/assets/frontend/vendor.self.js?body=1:15302:25)
        at Object.Registry.knownForType (http://localhost:3000/assets/frontend/vendor.self.js?body=1:12666:39)
        at Object.Registry.knownForType (http://localhost:3000/assets/frontend/vendor.self.js?body=1:12662:39)
        at Object.discoverKnownHelpers [as default] (http://localhost:3000/assets/frontend/vendor.self.js?body=1:20504:28)
        at new RenderEnv (http://localhost:3000/assets/frontend/vendor.self.js?body=1:20775:100)
        at Function.RenderEnv.build (http://localhost:3000/assets/frontend/vendor.self.js?body=1:20783:12)
        at Object.renderHTMLBarsBlock (http://localhost:3000/assets/frontend/vendor.self.js?body=1:20831:56)

我很难理解如何从上面的跟踪中找到弃用警告的来源。

【问题讨论】:

  • 对。这些弃用警告非常神秘且难以追踪。我的方法是在整个应用程序中查找Ember.keys

标签: ember.js


【解决方案1】:

几乎所有这些弃用警告都是由 Ember Data/HTMLBars 引起的,要么跳到更高版本,要么等待。

在您的特定堆栈跟踪中,它从不引用您的代码,只是引用供应商代码。所以它要么是第三方插件,要么就是我之前提到的。

【讨论】:

    【解决方案2】:

    我还升级到 Ember 1.13.3 和 Data 1.13.5 并收到了 Ember.keys 弃用消息。

    对我来说,它来自 ember-load-initializers 包中的 load-initializers。

    这似乎已在 https://github.com/ember-cli/ember-load-initializers/commit/78470bed646d76e176c1bc405796b3aeb01940f5 处得到修复,并包含在 ember-load-initializers 0.1.5 版本中。

    看起来这个版本发布了 Ember CLI 1.13.1 版本,所以更新 Ember CLI 应该会消除这种情况下的弃用消息。


    更新我还继续收到弃用消息和 greping bower_components 我看不到来自哪里。原来它们来自 Ember Inspector 本身(v1.8.3),所以也总是值得快速检查一下。它们已被修复 (https://github.com/emberjs/ember-inspector/commit/31cc1331e14660084ba3702559afbdff67b973d6),因此下一版本应删除其余部分。

    【讨论】:

      【解决方案3】:

      此时很难通过跟踪路由来确定弃用警告的来源。但是,我所做的是:

      cd project_directory
      ack Ember.keys > output
      

      这会将结果输出到名为output 的文件中。打开它,您会注意到哪些文件仍在使用旧语法。例如,在我的情况下:

      node_modules/ember-disable-proxy-controllers/dist/assets/vendor.js` 
      

      Line 60458。此时,您可以联系作者提出修复建议。我相信解决方案是将Ember.keys 的所有实例替换为(Object.keys || Ember.keys) 之类的更合理的实例。

      但请记住,这是一个弃用警告(理想情况下应该在将来解决),它不应该影响代码。

      【讨论】:

        猜你喜欢
        • 2019-10-12
        • 1970-01-01
        • 2011-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多