javascript エラー「Uncaught TypeError: Cannot convert undefined or null to object」の解決方法

javascript エラー「Uncaught TypeError: Cannot convert undefined or null to object」の解決方法

javascriptで、エラー「Uncaught TypeError: Cannot convert undefined or null to object」が発生した場合の原因と解決方法を記述してます。「Object.assign」に「undefined」や「null」を使用した場合に発生します。「chrome」や「firefox」や「safari」の各ブラウザのエラーメッセージの画像もキャプチャしてます。

環境

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

エラー内容

以下の、オブジェクトをマージするコードで発生。

const obj1 = undefined;
const obj2 = {a:1};

Object.assign(obj1, obj2);

console.log(obj1);

エラーメッセージ

Uncaught TypeError: Cannot convert undefined or null to object

画像

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

Uncaught TypeError: can't convert undefined to object

画像

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

TypeError: Object.assign requires that input parameter not be null or undefined

画像

原因

「Object.assign」はオブジェクトをパラメーターに指定してるため。

const obj1 = {b:1};
const obj2 = {a:1};

Object.assign(obj1, obj2);

console.log(obj1);
// {b: 1, a: 1}

解決方法

判定してから使用する

const obj1 = undefined;
const obj2 = {a:1};

if (obj1) {
  Object.assign(obj1, obj2);
}

console.log(obj1);
// undefined

その他のエラー

「Object.keys」や「Object.values」にも「undefined」や「null」を使用しても発生します。

const obj = undefined;

Object.keys(obj);
// Uncaught TypeError: Cannot convert undefined or null to object

or

const obj = null;

Object.values(obj);
// Uncaught TypeError: Cannot convert undefined or null to object