Ember.js Ember:断言失败:EmberObject.create不再支持定义计算属性

Ember.js Ember:断言失败:EmberObject.create不再支持定义计算属性,ember.js,ember.js-3,Ember.js,Ember.js 3,我在2.16版的余烬上,我们升级到了3.8版。在版本升级后,我看到了这个错误,但无法找出错误的来源。在什么情况下我会得到这个错误。我看到一个帖子: 但在我的代码中找不到相同的 我猜您没有逐步升级,而是直接从2.18升级到3.8,是吗?在3.2中增加了一个弃用,即如果已经创建了对象,则必须使用defineProperty定义计算属性。该功能已在3.5中删除。不再支持使用set或传递给EmberObject.create()的对象上的属性动态设置计算属性 这在3.2中已被弃用,并在3.5中删除:

我在2.16版的余烬上,我们升级到了3.8版。在版本升级后,我看到了这个错误,但无法找出错误的来源。在什么情况下我会得到这个错误。我看到一个帖子:

但在我的代码中找不到相同的


我猜您没有逐步升级,而是直接从2.18升级到3.8,是吗?在3.2中增加了一个弃用,即如果已经创建了对象,则必须使用
defineProperty
定义计算属性。该功能已在3.5中删除。不再支持使用
set
或传递给
EmberObject.create()
的对象上的属性动态设置计算属性

这在3.2中已被弃用,并在3.5中删除:

将对象作为EmberObject导入,{computed}来自“@ember/Object”;
EmberObject.create({
foo:computed('bar',function(){
// ...
})
});
EmberObject.extend({
init(){
这个._super(…参数);
this.set('foo',computed('bar',function(){
//  ...
}));
}
});
您应该迁移到:

将对象作为EmberObject导入,{computed}来自“@ember/Object”;
EmberObject.extend({
foo:computed('bar',function(){
// ...
})
}).create();
从'@ember/object'导入{defineProperty};
EmberObject.extend({
init(){
这个._super(…参数);
defineProperty(这个'foo',computed('bar',function(){
//  ...
}));
}
});
这种旧语法不是公共API。虽然Ember不会对公共API引入突破性的更改,但私有API可以随时更改。若核心团队认为它们被广泛使用,那个么它们将被弃用并在下一个LTS版本后删除。这里就是这样

通常,从LTS到LTS的逐步升级更安全、更容易。在这种情况下,您不会错过有用的弃用消息


请再看一看,即使如此,它还是有点技术性的,我认为应该有更多的真实例子。

我想你没有逐步升级,而是直接从2.18升级到3.8,是吗?在3.2中增加了一个弃用,即如果已经创建了对象,则必须使用
defineProperty
定义计算属性。该功能已在3.5中删除。不再支持使用
set
或传递给
EmberObject.create()
的对象上的属性动态设置计算属性

这在3.2中已被弃用,并在3.5中删除:

将对象作为EmberObject导入,{computed}来自“@ember/Object”;
EmberObject.create({
foo:computed('bar',function(){
// ...
})
});
EmberObject.extend({
init(){
这个._super(…参数);
this.set('foo',computed('bar',function(){
//  ...
}));
}
});
您应该迁移到:

将对象作为EmberObject导入,{computed}来自“@ember/Object”;
EmberObject.extend({
foo:computed('bar',function(){
// ...
})
}).create();
从'@ember/object'导入{defineProperty};
EmberObject.extend({
init(){
这个._super(…参数);
defineProperty(这个'foo',computed('bar',function(){
//  ...
}));
}
});
这种旧语法不是公共API。虽然Ember不会对公共API引入突破性的更改,但私有API可以随时更改。若核心团队认为它们被广泛使用,那个么它们将被弃用并在下一个LTS版本后删除。这里就是这样

通常,从LTS到LTS的逐步升级更安全、更容易。在这种情况下,您不会错过有用的弃用消息


另外,请查看“即使如此”,这有点技术性,我认为应该有更多的真实示例。

读者可能需要查看导致此错误的代码片段。您会将其添加到您的帖子中吗?读者可能需要查看导致此错误的代码片段。你能把它添加到你的帖子里吗?