我刚刚升级到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)
我很难理解如何从上面的跟踪中追踪弃用警告的来源。
答案 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)
更合理的内容。
但请记住,这是一个弃用警告(理想情况下应该在将来解决),它不应该影响代码。