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

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

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

環境

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

エラー内容

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

const result = new Promise.resolve(
  'foo'
);

エラーメッセージ

Uncaught TypeError: Promise.resolve is not a constructor

画像

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

Uncaught TypeError: Promise.resolve is not a constructor

画像

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

TypeError: function is not a constructor (evaluating 'new Promise.resolve(
  'foo'
)')

画像

原因

「Promise.resolve」はメソッドなので「new」は使用する必要はないため。

解決方法

「new」を使用しない

const result = Promise.resolve(
  'foo'
);

console.log(result);

実行結果

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

const result = new Promise((resolve, reject) => {
  resolve('foo');
});

console.log(result);