SyntaxError Invalid char `\x08' in expressionが出た時とりあえず試してみるとよいこと
移転しました。3秒後に移転先へ移動します。
RailsでSyntaxError (syntax =構文 の意) はよく遭遇するエラーですが、
「スペルミスか何かかな?」と思ったら
空白やコメントアウトしてる部分でSyntaxErrorが出て
( °∀°;)えっ????
ってなりました;(笑)
SyntaxError で Invalid char `\x08' in expressionが出たときは、まずここを見直そう!
このエラーが出たときに
「該当コードのどこも間違ってないのにおかしいなぁ…」という時にも有効です。
すぐ直せるエラーですが、画面眺めてるだけでは少々発見し難い。。。
忘れた頃にまた同じパターンに落ちたらハマりそうなので、忘れずに書き留めておこうっと。
- エラー内容:SyntaxError in 〇〇 Controller
- Invalid char `\x08' in expression
- Rails初心者はここを疑え!その①: #は半角変換× 半角入力○
- Rails初心者はここを疑え!その②:空白でSyntaxErrorが出たときは
- その③:とりあえずInvalid char `\x08' in expressionが出たらやってみるとよいこと
- まとめ
エラー内容:SyntaxError in 〇〇 Controller
私のエラー画面はこちら。UsersControllerでSyntaxError。
で、左画面コントローラ側の7行目、#新規作成 の部分でエラーだそうです。
Invalid char `\x08' in expression
SyntaxErrorが出るとこの文章も目にする。いつも読み流してたけど、せっかくなので少し理解しておく。
エラー・メッセージ
(一部抜粋)
Invalid character
プログラム・メッセージ文字列の中に無効な文字があります。
Invalid expression
式データ要素は無効です。(IEEE488.2,7.7.7.2を参照してください。)例えば、括弧が対をなしていなかったり、文字が規格に違反しています。
引用元:
無効な文字があるよって言ってたんですね。
でもコメントアウトしてるんだから、そもそも無効なのでは?
ヽ(*゚∀。*)ノアルェー?????
考えようとするとドハマりしそうです(笑)
さて解決にいきましょう。
Rails初心者はここを疑え!その①: #は半角変換× 半角入力○
解決の糸口は、コメント記述時の#にありました。
まず自分の場合、コメント書くときには主に次の2通りのやり方をしています。
一つは、先に文章書いてから行選択 でコメントアウトさせる方法
(文章書く → Command+L → Command+/ )
もう一つは、まず#を書いてから文章を書きだす方法
で、この#から書き始めていると(時々やってしまっているのですが)、
#を書く際、直前まで かな入力 になってたら(#あとにすぐまた日本語書きたいので)
#の入力を、かな入力で#を打ってから半角変換している
↑これがエラーになることがある(ただし毎回ではない)
この毎回じゃないというという点が難点^^;
エラー回避できるときもある、というよりむしろ忘れた頃にエラー認識されたりするので、コメントアウト部分でエラー出てたらまずはここを見直してみよう。
Rails初心者はここを疑え!その②:空白でSyntaxErrorが出たときは
これでコメントアウト部分のエラーは回避できました。
そのあとに続けて空白部分でもSyntaxErrorが出たので、これも直してみます。
エラーになってる空白の行を一回消して書き直してみる。
エラーにされている左画面の11行目、余計な空白は消してみる
これでどうかな?
↓
うむ!解決!^^
その③:とりあえずInvalid char `\x08' in expressionが出たらやってみるとよいこと
空白やコメントアウト部分でない箇所でも、Invalid char ~が出たら下記のように、とりあえずコードの空白部分を書き直したり、一文まるごとすぐ下などに書き直してみると、あっさりエラー回避できることもあります。
空白書き直すときは先頭や末尾も忘れずに書き直しましょう。
まとめ
★コメントの#は半角入力で書くべし
★空白でエラーが出たら、空白を書き直すと解決できる場合もある
コメント部分や空白といった、一見処理に関係のないはずのところでSyntaxErrorになったときには、まずこのあたりをチェックしてみよう。
#の変換を疑うという発想は、画面とにらめっこしてるだけだとなかなか発見しづらいです。
なんとなくでも手を動かしてたら解決できるエラーではありますが、一つ一つ自分なりに理解して、糧にしていけたらと思います。
今後もたびたび遭遇しそうなエラーなので、またハマりそうになったら「そういえばこういう事例あったなぁ」と思い出して、次に活かしていきましょう~♪
ここまで読んでくださり、ありがとうございました^^