ember.js js:EmberObject.create在一个mixin中的计算属性上出错

aurhwmvo  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(95)

我正在将我的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中的示例,但没有成功。
如果有人能帮我弄清楚到底是怎么回事以及如何修复它,那将不胜感激。

aij0ehis

aij0ehis1#

如果有人曾经发现这个线程与一个共同的问题,它原来是这个错误是由一个npm包ember-cp-validations,这是在一个model.js文件中使用。
该错误已报告为ember 3.10的here
我不能使建议的修复工作,但升级到3. 11修复了这个问题。

相关问题