TypeError: can't redefine non-configurable property "x"
Die JavaScript-Ausnahme "can't redefine non-configurable property" tritt auf, wenn versucht wurde, eine Eigenschaft neu zu definieren, aber diese Eigenschaft ist nicht konfigurierbar.
Meldung
TypeError: Cannot redefine property: "x" (V8-based) TypeError: can't redefine non-configurable property "x" (Firefox) TypeError: Attempting to change value of a readonly property. (Safari)
Fehlertyp
TypeError
Was ist schiefgelaufen?
Es wurde versucht, eine Eigenschaft neu zu definieren, aber diese Eigenschaft ist nicht konfigurierbar. Das configurable-Attribut steuert, ob die Eigenschaft aus dem Objekt gelöscht werden kann und ob ihre Attribute (außer writable) geändert werden können. Normalerweise sind Eigenschaften in einem durch einen Objektinitialisierer erstellten Objekt konfigurierbar. Wenn jedoch z. B. Object.defineProperty() verwendet wird, ist die Eigenschaft standardmäßig nicht konfigurierbar.
Beispiele
>Nicht-konfigurierbare Eigenschaften erstellt durch Object.defineProperty
Die Object.defineProperty() erstellt nicht-konfigurierbare Eigenschaften, wenn Sie sie nicht als konfigurierbar angegeben haben.
const obj = Object.create({});
Object.defineProperty(obj, "foo", { value: "bar" });
Object.defineProperty(obj, "foo", { value: "baz" });
// TypeError: can't redefine non-configurable property "foo"
Sie müssen die "foo"-Eigenschaft auf konfigurierbar setzen, wenn Sie beabsichtigen, sie später im Code neu zu definieren.
const obj = Object.create({});
Object.defineProperty(obj, "foo", { value: "bar", configurable: true });
Object.defineProperty(obj, "foo", { value: "baz", configurable: true });