TypeError: calling a builtin X constructor without new is forbidden
The JavaScript exception "calling a builtin X constructor without new is forbidden" occurs when you try to call a builtin constructor without using thenew keyword. All modern constructors, such asPromise andMap, must be called withnew.
In this article
Message
TypeError: Constructor X requires 'new' (V8-based)TypeError: Promise constructor cannot be invoked without 'new' (V8-based)TypeError: calling a builtin X constructor without new is forbidden (Firefox)TypeError: calling X constructor without new is invalid (Safari)
Error type
TypeErrorWhat went wrong?
In JavaScript,calling a function withoutnew andconstructing a function withnew are two distinct operations, and functions can behave differently depending on how they are called.
Apart from the following legacy constructors, all modern constructors must be called withnew:
Object()Function()(and its subclasses)Error()(and its subclasses)RegExp()Array()
Some other constructors, such asDate(), and primitive wrappers, such asString(),Number(), andBoolean(), can also be called with or withoutnew, but the return types differ in the two cases.
On every constructor page, you can find information about whether the constructor must be called withnew.
Examples
>Invalid cases
const m = Map(); // TypeError: calling a builtin Map constructor without new is forbiddenValid cases
const m = new Map();