[eslint] Error - Parsing error: Unexpected character '#'
GitHub で利用できる自動コードレビュー・サービス「Sider
」(旧Side CI
)で ES Lint のチェックを有効にすると Markdown ファイルが叱られる。sideci.yml
で ext: 'js'
とJS ファイルを明示しても NG。
[eslint] Error - Parsing error: Unexpected character '#'
# はじめに これは README のテキストです。
TL;DR
*.js
ファイルが1つも無い場合の ESLint v5.4.0 からの仕様です。「Sider」(旧SideCI)で ESLint を有効にし、sideci.yml
に ESLint の検索対象のディレクトリを全て(「./*
」)に指定している場合に発生します。
以下のいずれかをお試しください。
- ダミーの「
*.js
」ファイルを設置する。 - 何かしらの「
*.js
」ファイルを設置するまで Sider 側の ESLint を無効にする。
TS;DR
ESLint は、JavaScriptの静的コード分析ツールです。JavaScript のコードで見つかった問題のあるパターンを識別してくれます。
ESLint v4 系の場合は Javascript ファイルが1つもない場合は「success
」を返していましたが、ESLint の v5.4.0 からチェック対象の Javascript ファイルが1つもない場合はエラーを吐き出すようになりました。
sideci.yml
で eslint
のディレクトリを明示すると回避できることがわかったので、「dir: './*'
」と設定して回避できていたのですが、新規 Markdown を追加したところ、レビューが通らなくなりました。該当 Markdown ファイルに意図しない文字「#
」があるとのこと。
[eslint] Error - Parsing error: Unexpected character '#'
# はじめに これは README のテキストです。
しかし、「Sider」側のログをみると、新規追加の Markdown ファイルどころか他の Markdown ファイルにもゲーゲー言っており、パースエラーの種類を網羅する勢い。
No id found! - Error - Parsing error: Unexpected character '#'
No id found! - Error - Parsing error: Unexpected token . : < 4.0
No id found! - Error - Parsing error: Unexpected token Status
Running analyzer
# eslint --format=compact --no-color --output-file=/tmp/d...r/output.txt --ext=js ./*
exit status: 1
output.txt
/tmp/d...r/CODE_OF_CONDUCT.md: line 1, col 1, Error - Parsing error: Unexpected character '#'
/tmp/d...r/composer.json: line 2, col 11, Error - Parsing error: Unexpected token :
/tmp/d...r/index.php: line 1, col 1, Error - Parsing error: Unexpected token <
/tmp/d...r/LICENSE_OUTLINE.md: line 1, col 1, Error - Parsing error: Unexpected character '#'
/tmp/d...r/LICENSE.md: line 1, col 24, Error - Parsing error: Unexpected token 4.0
/tmp/d...r/MEMBERS.md: line 1, col 1, Error - Parsing error: Unexpected character '#'
/tmp/d...r/README.md: line 1, col 10, Error - Parsing error: Unexpected token Status
/tmp/d...r/sideci.yml: line 4, col 10, Error - Parsing error: Unexpected token .
8 problems
# eslint --version
v5.4.0
exit status: 0
No id found! - Error - Parsing error: Unexpected character '#'
No id found! - Error - Parsing error: Unexpected token :
No id found! - Error - Parsing error: Unexpected token <
No id found! - Error - Parsing error: Unexpected character '#'
No id found! - Error - Parsing error: Unexpected token 4.0
No id found! - Error - Parsing error: Unexpected character '#'
No id found! - Error - Parsing error: Unexpected token Status
No id found! - Error - Parsing error: Unexpected token .
Removing issues from unchanged or untracked files... -> 6.0005e-05s
Writing result... -> 0.000254659s
観念してダミーの Javascript ファイルを設置したところ、すんなり回避できたのですが、使わないファイルがあるのも気持ち悪いので、実際に設置するまで設定を無効にしておくことにしました。(で、設置したらしたで設定を有効にするのを忘れるというフラグ)
併せて読みたい
- ESLint 最初の一歩 @ Qiita