Полагаю, вы не обновляли шаг за шагом, а сразу перешли с 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.В этом случае вы не пропустите полезные сообщения об устаревании.
Пожалуйста, обратите внимание на запись в руководстве по устареванию , даже если она немного техническая и должна иметь более реальный мир.примеры на мой взгляд.