括弧の閉じ忘れで出る SyntaxError の原因と直し方
丸括弧・波括弧・角括弧の閉じ忘れで出る構文エラーです。Node.jsはファイルの終わりまで読んでから対応が崩れていることに気づくため、エラー行が原因の行と一致しないことがあります。
エラーメッセージの読み方
main.js:2
main.js- ファイル名
2- 行番号 — Node.jsが構文解析を諦めた位置
SyntaxError- エラークラス — 実行前の構文チェックで検出されました
missing ) after argument list- 内容 — 期待していたもの、または受け付けられなかったもの
このエラーが出る典型パターン
パターン1
1 let message = "Hello"; 2 console.log(message ^
main.js:2
console.log(message
^^^^^^^
SyntaxError: missing ) after argument list
console.logの呼び出しを閉じる丸括弧が足りません。複数行にまたがる呼び出しでは見落としやすいミスです。
直し方: (空) を ); にします。
広告
広告スロット(未設定)
パターン2
1 function greet(name) { 2 console.log("Hi " + name); 3 ^ 4 greet("Al");
main.js:4
greet("Al");
SyntaxError: Unexpected end of input
greet関数の閉じ波括弧が足りません。Node.jsはファイルの終わりまで読んでから、対応が崩れていることに気づきます。
直し方: (空) を } にします。
パターン3
1 const nums = [1, 2, 3 ^ 2 console.log(nums.length);
main.js:2
console.log(nums.length);
^^^^^^^
SyntaxError: Unexpected identifier 'console'
配列リテラルの閉じ角括弧が足りません。次の行のconsoleまで1つの式として読み込もうとして構文エラーになります。
直し方: (空) を ] にします。
よくある誤解
エラーが指す行を直しても直らないことがあります。実際の閉じ忘れはもっと上の行にあり、Node.jsはファイル末尾(または次の予期しないトークン)に達するまで検出できません。
まとめ
括弧の閉じ忘れで出る SyntaxErrorは初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。