【Node.js】「TypeError [ERR_INVALID_CALLBACK]: Callback must be a function」の対処法

プログラミングのKnow-howを共有しましょう

【Node.js】「TypeError [ERR_INVALID_CALLBACK]: Callback must be a function」の対処法

スポンサーリンク

Node.jsでプログラムを実行した時に発生する「TypeError [ERR_INVALID_CALLBACK]: Callback must be a function」というエラーの原因と対処法を書いていきます。

このエラーは以下のようなケースで多く見られるのではないでしょうか。

  • Node.jsの初心者でファイル書き込み処理に「fs」モジュールを利用した時
  • 昔作成したNode.jsのプロジェクトを起動した時

このエラーの原因はとてもシンプルです。
すぐに解決することができます。

コールバック関数が書かれていない

「Callback must be a function」とエラーメッセージにある通りですね。
最もありそうな例と共に対処方法を紹介していきます。

以下のソースをご覧ください。

このソースはfsモジュールでファイルに書き込み処理を行います。
書き込みにはfs.writeFileを使っていますが、このまま実行しようとするとタイトルのエラーが発生します。

「前はこれでできたのにどうしてできないんだ!」と思う方がいるかもしれません。
実は昔のNode.jsと今のNode.jsではfs.writeFileの仕様が変わっていて、コールバック関数の指定が必須になったみたいです。

コールバック関数とは

呼び出し先関数(今回はfs.writeFile)の実行中に実行されるよう引数などで指定する関数のこと。
呼び出し先の関数で何かしらのアクション(エラーが発生した、処理が完了した)が発生したら実行されるといった使い方が多い。

そのため、以下のように書けばこのエラーは回避することができます。

第三引数にfunction(err,result)が追加されています。