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
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 });