javascript エラー「Uncaught TypeError: Promise.reject is not a constructor」の解決方法

javascript エラー「Uncaught TypeError: Promise.reject is not a constructor」の解決方法

javascriptで、エラー「Uncaught TypeError: Promise.reject is not a constructor」が発生した場合の原因と解決方法を記述してます。「Promise.reject」メソッドに対して「new」を使用した場合に発生します。「chrome」や「firefox」や「safari」の各ブラウザのエラーメッセージの画像もキャプチャしてます。

環境

  • OS windows11 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 107.0.5304.88

エラー内容

以下の、「Promise.reject」を使用したコードで発生。

const err = new Promise.reject(
  new Error('Error!!')
);

エラーメッセージ

Uncaught TypeError: Promise.reject is not a constructor

画像

firefox106の場合では、以下のエラーが発生します。

Uncaught TypeError: Promise.reject is not a constructor

画像

safari15.5では、以下のエラーとなります。

TypeError: function is not a constructor (evaluating 'new Promise.reject(
  new Error('Error!!')
)')

画像

原因

「Promise.reject」はメソッドなので「new」は使用しない

解決方法

「new」を使用しない

const err = Promise.reject(
  new Error('Error!!')
); // Uncaught (in promise) Error: Error!!

または、「new」を使用するなら「Promise」を使用する

const err = new Promise((resolve, reject) => {
  reject(new Error('Error!!'));
}); // Uncaught (in promise) Error: Error!!