エラーメッセージ一覧

本で紹介しきれなかったエラーメッセージや、p5.jsのウェブエディターのバージョンアップで変更のあったメッセージを掲載しています。
調べるときはブラウザーの検索機能を使うと便利です。Chrome の場合、ショートカットは Ctrl-F(⌘-F) です。

エラーと警告

実行したときにプログラムが途中で止まってしまうのが“エラー”です。それに対して、コードエディターに色は付くけれど、ひとまずプログラムは動くのは“警告(ワーニング)”です。警告は「間違っているかもしれないよ」という、言葉どおりの警告(けいこく)です。

エラーは、本でも説明したとおり、コードエディターの行番号に赤色の背景が付き、エラーの原因になっていそうなコードにも赤色の波線がつきます(ただし、必ずしも波線部分が原因とは限りません)。プログラムを実行すると強制停止し、コンソールにメッセージが表示されます。

一方、警告のほうは、コードエディターの表示がうすい黄色なのであまり目立ちません。そして、プログラムを実行してもコンソールにはメッセージは表示されないことがあります。では、どこで警告の内容を知ることができるかというと、コードエディターの黄色くなった行番号にマウスポインターを重ねると表示されます。(一方、コンソールにだけ表示される警告もあります)

警告は、プログラムコードとして正しい(こちらの意図どおり)でも表示されることがあります。その場合は無視して構いません。

エラー

メッセージの「****」の部分には、みなさんのコードの中にある文言が入ります。「変数」という表現には定数も含みます。

ReferenceError: start is not defined
参照エラー: start は定義されていません。
「ピゴニャンのスケッチ」を使用していないときにこのエラーが出ます。ここから「ピゴニャンのスケッチ」を開き、別名で保存してから進めてください。
ReferenceError: **** is not defined
参照エラー: **** は定義されていません。
変数名が間違えていないか確認してください。間違えていない場合は、別のスコープ({ }の範囲)で宣言されている可能性があります(12.2節)。
SyntaxError: await is only valid in async functions and the top level bodies of modules
構文エラー: awaitはasyncの付いた関数の中か、モジュールの一番外側でしか有効ではありません。
awaitが付いた関数(sleepやsayFor)を中で呼び出している関数宣言のasyncをつける必要があります。あるいは、function draw () {の先頭のasyncを削除してしまっていないか確認してください。
SyntaxError: Unexpected identifier '****'
構文エラー: 予想外の識別子 **** があります。(識別子というのは変数名や関数名のことで、予想外の…というのはつまり「おかしいよ」ということです。)
変数名や関数名が間違えていないか、名前の途中に空白(スペース)が入っていないか確認してください。if文の ( ) 内の構文が間違っているときにもこのエラーが生じます。
SyntaxError: Identifier '****' has already been declared
構文エラー: 識別子 **** はすでに宣言されています。
同じ変数を別の場所で定義していないか確認してください。
ReferenceError: Cannot access '****' before initialization
参照エラー: 初期化する前に **** にアクセスすることはできません。
同じコードの中で呼び出している関数の名前を使って、変数宣言しようとしていないか確認してください。
TypeError: **** is not a function
型エラー: **** は関数ではありません。
同じコードの中で宣言されている変数を、関数として呼び出そうとしています。使いたい関数と同じ名前の変数名を宣言してしまっていたら、変数名のほうを置きかえてください。あるいは、変数を関数として使おうとしていないか確認してください。
SyntaxError: Unexpected reserved word
構文エラー: 予想外の予約語があります。(そこに予約語があるのはおかしいよ…ということです)
予約語(await など)を変数名として使おうとしていないか確認してください。
SyntaxError: Unexpected token '****'
構文エラー: 予想外のトークン **** があります。(ここでのトークンとは文字列のことです)
予約語(if など)を変数名として使おうとしていないか確認してください。
SyntaxError: Unexpected end of input
構文エラー: 入力の終わりが予想外です。(コードの終わりがおかしい…ということです)
すべての波カッコ { } がきちんとペアでそろっているか確認してください。また、変数宣言が途中になっている場合(let や const だけ書かれている)にもこのエラーが生じます。
SyntaxError: Unexpected token ')'
予想外のトークン ) があります。
if文などの ( ) 内の構文が間違っていないか確認してください。

警告

メッセージの「****」の部分には、みなさんのコードの中にある文言が入ります。「変数」という表現には定数も含みます。

'async function' is only available in ES8 (use 'esversion: 8').
“async”の付いた関数は ES8 というバージョンのJavaScriptでしか使えません。
先頭2行のおまじないを消していないか確認してください。
Expected a conditional expression and instead saw an assignment.
代入ではなく、条件文を記述してください。
「等しい」を表す比較演算子は == あるいは === です。等号 = がひとつになっていないか確認してください。
['****'] is better written in dot notation.
['****'] という部分はドット記法で記述したほうが良いです。
ブラケット記法は「変数に代入されたプロパティ名」を使って要素にアクセスする場合にのみ使います。(本にしたがって試しに記述してみた場合は、この警告は無視してください)
p5.js says: you have used a p5.js reserved function "****" make sure you change the function name to something else.(実行時にコンソールに表示)
あなたはp5.jsが予約している **** という関数名を他の何かに変えようとしています。
本では解説していませんが、p5.jsのライブラリーで定義されている関数名を、自分のコードの変数名や関数名に使おうとしたときに表示される警告です。別の変数名/関数名を選んでください。