我正在将余烬应用程序从3.9升级到3.10。
我开始出现错误。
断言失败:EmberObject.create不再支持定义计算属性。在调用create()之前,使用extend()或reopen()定义计算的属性。
我不确定100%,但是经过一番追踪之后,这段代码似乎导致了此错误(此mixin中的计算属性)。
import Mixin from '@ember/object/mixin';
import { get, set, computed } from '@ember/object';
import { inject as service } from '@ember/service';
import DS from 'ember-data';
const { PromiseArray } = DS;
export default Mixin.create({
ajax: service(),
intl: service(),
patientAnalysis: computed(function() {
return this.getPatientAnalysis();
}),
getPatientAnalysis() {
let _this = this;
let patient = this.patientModel || this.patient;
let intl = this.intl;
if (get(patient, 'id')) {
return PromiseArray.create({
promise: new Promise(function(resolve, reject) {
let url = `/analyses/patient/${patient.id}`;
_this
.get('ajax')
.request(url)
.then(json => {
json.map(a => {
set(a, 'statusIntlName', intl.t(`status.${a.statusId}`));
});
resolve(json);
}, reject);
})
});
}
}
此混入文件正在导入并在另一个组件中使用,就像这样
import Analyses from 'ui/mixins/components/patient/analyses';
[...]
export default Component.extend(Analyses, {
我已经阅读了一些有关此特定错误的线程,例如this,但是我无法确切地知道如何使它起作用。我什至不确定为什么从升级到3.10版本时会出现此错误,因为在该版本中似乎并未弃用或删除此错误。
我尝试将余烬作为示例从余烬doc重新编写,但没有成功。
[如果有人可以帮助我弄清楚到底发生了什么以及如何解决,将不胜感激。
[如果有人发现这个线程有一个常见问题,那么就会发现此错误是由ember-cp-validations
文件中使用的npm软件包model.js
引起的。
已经报告了余烬3.10错误here。
我无法使建议的修复程序起作用,但是升级到3.11修复了该问题。