TypeError: Invalid descriptor for property {x} (Edge)
TypeError: "x" is not a non-null object (Firefox)
TypeError: Property description must be an object: "x" (Chrome)
TypeError: Invalid value used in weak set (Chrome)
An object is expected somewhere and wasn't provided. null is not an object and won't work. You must provide a proper object in the given situation.
When methods like Object.create() or Object.defineProperty() and Object.defineProperties() are used, the optional descriptor parameter expects a property descriptor object. Providing no object (like just a number), will throw an error:
Object.defineProperty({}, 'key', 1);
// TypeError: 1 is not a non-null object
Object.defineProperty({}, 'key', null);
// TypeError: null is not a non-null object
A valid property descriptor object might look like this:
Object.defineProperty({}, 'key', { value: 'foo', writable: false });
WeakMap and WeakSet objects require object keysWeakMap and WeakSet objects store object keys. You can't use other types as keys.
var ws = new WeakSet();
ws.add('foo');
// TypeError: "foo" is not a non-null object Use objects instead:
ws.add({foo: 'bar'});
ws.add(window);
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/No_non-null_object