環境
2016/12/28時点
- macOS Sierra - version 10.12.2
- vim - version 7.4.898
※ vim は Homebrewによりインストールしたもの。.vimrcが借り物。
障害
拡張子に.js
が付いたファイルを開くとエラーメッセージが表示されるが、リターンキー押下によりファイルを開ける。
Error detected while processing function<SNR>34_BufWritePostHook[4]..<SNR>34_UpdateErrors[15]..<SNR>34_CacheErrors[26]..31:
line 7:
E713: Cannot use empty keyfor Dictionary
Press ENTER or type command to continue
調査
状態を確認する
vimの現在のバッファのファイルタイプを確認するとjavascript
として扱われている。
:echo &filetype
javascript
エラーメッセージでググる
"E713: Cannot use empty key for Dictionary"
※ 全文で一致しないので部分で探る。
エラーメッセージで検索すると、プラグインが原因のように思える。
障害の発生箇所を特定する
.vimrcファイルのプラグインを読み込む行を全てコメントアウトして起動するとエラーメッセージが表示されない。
一つずつコメントアウトを外して起動してエラーが発生するプラグインを探すと、NeoBundle 'pmsorhaindo/syntastic-local-eslint.vim'
を有効するとエラーメッセージが表示された。
障害の詳細を調べる
syntastic-local-eslint.vimをググると、eslintによりjavascriptの構文チェックを行うプラグインらしい。
解決
eslintをインストールする
eslintが使えるか確認すると未インストールだったのでインストールを行い、eslint単体で実行できるようにする。
$ pwd
/Users/stupiddog/projects/node/app001
$ npm list -g eslint
/usr/local/lib
└── (empty)
npm ERR! code 1
$ npm list eslint
/Users/stupiddog/projects/node/app001
└── (empty)
npm ERR! code 1
$ npm install --save-dev eslint
$ npm list eslint
app001@0.1.0 /Users/stupiddog/projects/node/app001
└── eslint@3.12.2
$ ./node_modules/.bin/eslint -v
v3.12.2
$ echo"{}"> .eslintrc.json
eslintの動作を確認する
次に、javascriptが記述されたファイルをチェックしてみる。
※ eslintの設定は取り敢えず動かすので空っぽ
$ echo"{}"> .eslintrc.json
$ cat main.js
const {app, BrowserWindow}= require('electron');$ ./node_modules/.bin/eslint main.js
/Users/stupiddog/projects/node/app001/main.js
1:1 error Parsing error: The keyword 'const' is reserved
✖ 1 problem (1 error, 0 warnings)
障害の解消を確認する
vimで開いてエラーメッセージが表示されずチェックが行われることを確認した。
まとめ
借り物の.vimrc
で実行してプラグインに必要なプログラムをインストールしていなかったというオチ。