Code Fix

初級

括弧の閉じ忘れで出る 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パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)