TypeError: kann nicht konfigurierbare Eigenschaft "x" neu definieren
Die JavaScript-Ausnahme "kann nicht konfigurierbare Eigenschaft neu definieren" tritt auf, wenn versucht wurde, eine Eigenschaft neu zu definieren, die nicht konfigurierbar ist.
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, die nicht konfigurierbar ist. 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 Objekt, das mit einem Objekt-Initialisierer erstellt wurde, konfigurierbar. Wenn jedoch zum Beispiel Object.defineProperty()
verwendet wird, ist die Eigenschaft standardmäßig nicht konfigurierbar.
Beispiele
Nicht konfigurierbare Eigenschaften, erstellt mit Object.defineProperty
Die Object.defineProperty()
-Methode erstellt nicht konfigurierbare Eigenschaften, wenn Sie diese nicht als konfigurierbar festgelegt 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 });