我正在将我的ember应用程序从3.9升级到3.10。
我开始收到一个错误。
Assert失败: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);
})
});
}
}
此mixin正在导入并用于另一个组件,如下所示
import Analyses from 'ui/mixins/components/patient/analyses';
[...]
export default Component.extend(Analyses, {
我读过一些关于这个错误的帖子,比如this one,但是我不知道如何解决这个问题。我甚至不知道为什么我在升级到3.10版本时会遇到这个错误,因为这个错误在那个版本中似乎没有被否决或删除。
我试着将我的mixin重写为ember doc中的示例,但没有成功。
如果有人能帮我弄清楚到底是怎么回事以及如何修复它,那将不胜感激。
1条答案
按热度按时间aij0ehis1#
如果有人曾经发现这个线程与一个共同的问题,它原来是这个错误是由一个npm包
ember-cp-validations
,这是在一个model.js
文件中使用。该错误已报告为ember 3.10的here。
我不能使建议的修复工作,但升级到3. 11修复了这个问题。