Ember: Assertion Failed: EmberObject.create больше не поддерживает определение вычисляемых свойств

Я был на Ember версии 2.16, и мы обновились до 3.8. После обновления версии я вижу эту ошибку, но не могу понять, откуда эта ошибка. В каких случаях я получу эту ошибку. Я видел один из постов:

Динамические вычисляемые свойства в Ember.JS устарели?

Но не могу понять то же самое в моем коде.

1 ответ

Я полагаю, вы не обновляли шаг за шагом, а сразу перешли с 2.18 на 3.8, не так ли? В 3.2 добавлен износ, что вычисляемые свойства должны быть определены с использованием defineProperty если объект уже создан Функциональность была удалена в 3.5. Установка вычисляемого свойства динамически с помощью set или свойство объекта, переданного EmberObject.create() больше не поддерживается.

Это устарело в 3.2 и удалено в 3.5:

import Object as EmberObject, { computed } from '@ember/object';

EmberObject.create({
  foo: computed('bar', function() {
    // ...
  })
});
EmberObject.extend({
  init() {
    this._super(...arguments);

    this.set('foo', computed('bar', function() {
      //  ...
    }));
  }
});

Вы должны перейти на:

import Object as EmberObject, { computed } from '@ember/object';

EmberObject.extend({
  foo: computed('bar', function() {
    // ...
  })
}).create();
import { defineProperty } from '@ember/object';

EmberObject.extend({
  init() {
    this._super(...arguments);

    defineProperty(this, 'foo', computed('bar', function() {
      //  ...
    }));
  }
});

Этот старый синтаксис не был публичным API. Хотя Ember не вносит серьезных изменений в общедоступный API, частные API могут быть изменены в любое время. Если основная команда считает их широко используемыми, они устаревают и удаляются после следующего выпуска LTS. Это был случай здесь.

Обычно безопаснее и проще сделать шаг к переходу с LTS на LTS. В этом случае вы не пропустите полезные сообщения об устаревании.

Пожалуйста, обратите внимание на статью в руководстве по устареванию, даже если она немного техническая и должна иметь больше реальных примеров, на мой взгляд.

Другие вопросы по тегам