查找弃用错误来源

时间:2015-07-08 18:21:44

标签: ember.js

我刚刚升级到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)

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

3 个答案:

答案 0 :(得分:7)

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

在您的特定堆栈跟踪中,它永远不会引用您的代码,只引用供应商代码。所以它是第三方插件,或者是我之前提到的。

答案 1 :(得分:4)

我还升级到了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)所以下一个版本应该删除其余部分。

答案 2 :(得分:2)

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

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)更合理的内容。

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