Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

GVimでJavaScriptのシンタックスチェックしようとしたら、abnormal statusとか言われて困った話

$
0
0

VimでJavaScriptのシンタックスチェックをしたい

プラグイン導入

_vimrcを修正

NeoBundle 'scrooloose/syntastic'

Syntasticの設定

_vimrcを修正

let g:syntastic_check_on_open = 0 "ファイルオープン時にはチェックをしない
let g:syntastic_check_on_save = 1 "ファイル保存時にはチェックを実施
" jshint 設定ファイルの場所を指定
let g:syntastic_javascript_jshint_conf = $HOME . '/.jshintrc' 

4行目のjshint設定ファイルの場所を指定しなかったがために、エラーにあって困った。。

ここでちゃんと指定してれば、以下は起きないハズなので読まなくてOKです。。


発生したこと

適当に書いたJavaScriptファイルで動作確認しようとしたら、こんなエラー

Checker javascript/jshint returned abnormal status

なんか動いてないっぽい。。

jshintのインストール確認

npm install jshint --global

jshint 設定ファイル

ホームディレクトリ以下に、.jshintrcを作る。

{
  "indent" : 2,      // インデント
  "camelcase":true,  // キャメルケース
  "maxlen" : 80,     // 一行の最大文字数
  "unused" : true,   // 宣言のみで使用していない変数を検出
  "eqeqeq":true,     // ==、!=の使用禁止
  "undef" : true,    // グローバル変数へのアクセスを禁止
  "devel" : true,     // console、alertを許可
  "globals": {
    "$": false,
    "jQuery": false
  }
}

以前作っていたファイルが、地味にJSONの文法エラーで更にハマる。。

.jshintrcの文法確認

コンソールからちゃんと動くかやってみる。

jshint --config %HOME%\.jshintrc test.js

↓こんなんでで来る場合は、JSON文法エラー

ERROR: Can't parse config your_config_file_path_here

↓ちゃんとチェックしてくれたらOK

test.js: line 3, col 8, Creating global 'for' variable. Should be 'for (var key ...'.
test.js: line 3, col 15, 'options' is not defined.
test.js: line 4, col 17, 'options' is not defined.
test.js: line 4, col 25, 'key' is not defined.

4 errors

errorsって言われてもなんか嬉しいww

Syntasticをデバッグモードにしてもっと情報をもらう

再びvimにて。。
ノーマルモードから、syntasticの設定をセット。
テストしたいJSファイルを保存するとチェックが走る。

<ESC>
let g:syntastic_debug=3
:w

ここで設定ファイルが読み込めてない的なエラーを発見。


参考URL:Checker javascript/jshint returned abnormal status · Issue #1029 · scrooloose/syntastic

唯一これしかヒットしなくて、英語だし、長いし・・ひぇ~と思ってたんだけど、
下の方でキレ気味に

「いいから
let g:syntastic_javascript_jshint_conf = $HOME . '/.jshintrc'
やれよ。」

って記述がビンゴでした。
ありがとう。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>