Как настроить Syntastic с помощью JSHint?

Как использовать плагин Syntastic Vim с JSHint для проверки кода JavaScript?

Окружающая обстановка:

  • Ubuntu 11.04
  • VIM - Vi IMproved 7.3

Что я установил, следуя решению на VIM + JSLint?:

  • Vundle
  • node.js
  • Диспетчер пакетов узлов
  • jshint, глобально
  • Syntastic, установленный через Vundle (использовала команду: BundleInstall внутри Vim, чтобы убедиться, что Syntastic установлен.)

.vimrc:

set nocompatible               " be iMproved
filetype off                   " required!

set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

" let Vundle manage Vundle
" required! 
Bundle 'gmarik/vundle'

" My Bundles here:
Bundle 'scrooloose/syntastic'

filetype plugin indent on     " required! 

let g:syntastic_enable_signs=1
let g:syntastic_auto_jump=1
let g:syntastic_stl_format = '[%E{Err: %fe #%e}%B{, }%W{Warn: %fw #%w}]'

set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*

ищем установленные исполняемые файлы:

$ which gjslint
$ which jslint
$ which jsl
$ which jshint
/home/fernando/local/node/bin/jshint
$ 


$ echo $PATH

>/home/fernando/local/bin:/home/fernando/local/node/bin:/home/fernando/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

$ jshint test.js

test.js: строка 3, столбец 1, 'blbla' не определен.
test.js: строка 4, столбец 1, 'x' не определен.
test.js: строка 4, столбец 5, 'nonono' не определен.
test.js: строка 6, столбец 1, 'a' не определен.
test.js: строка 7, столбец 1, 'b' не определен.
test.js: строка 8, столбец 5, 'a' не определен.
test.js: строка 8, столбец 10, 'b' не определен.
test.js: строка 8, столбец 7, Ожидал '===', а вместо этого увидел '=='.

8 ошибок

$ vi test.js -- no error message shown

:SyntasticEnable -- Vim exits and restarts, opening the same file, but still no message

:w -- still no error message

:Errors -- the location list opens but it is empty

Кажется, что и jshint, и Syntastic установлены, но, вероятно, чего-то не хватает. Что бы это могло быть?


person Fernando Correia    schedule 29.08.2011    source источник
comment
Очень странно! Я только что без проблем попробовал Syntastic с Vim 7.3 в Linux. Может быть, подать вопрос на GitHub?   -  person a paid nerd    schedule 15.11.2011


Ответы (3)


Вот более свежая информация, есть конфигурация для привязки расширения файла к чекеру,
в вашем .vimrc

let g:syntastic_javascript_checkers = ['jshint']

Также, чтобы получить информацию о том, что происходит, запустите эту команду в vim

:SyntasticInfo

И вы получите примерно такой результат:

Syntastic info for filetype: javascript  
Available checkers: gjslint jshint  
Currently active checker(s): gjslint  
Press ENTER or type command to continue
person alfonsodev    schedule 04.07.2013
comment
Разве вы не имеете в виду jshint вместо jslint в качестве номинального вопроса? - person Ehtesh Choudhury; 31.10.2013
comment
ОП здесь; Подтверждаю, что это работает: let g:syntastic_javascript_checkers = ['jshint']. - person Fernando Correia; 02.07.2014
comment
Стоит отметить, что в 2018 году ... jshint, похоже, изначально является дефакто для Syntastic. Я никогда не делал первую часть этого, но в 2018 vim после запуска команды info я вижу Available checker: jshint. Currently enabled checker: jshint - person Tommy; 03.04.2018

У меня была такая же проблема. Оказывается, Syntastic ищет jsl (JSLint), прежде чем искать jshint. Если у вас установлены оба, вы, скорее всего, введете в заблуждение. Я переместил jsl куда-то не в свой PATH, и jshint был обнаружен нормально.

Источник:
https://github.com/scrooloose/syntastic/pull/47

person Ricky Mondello    schedule 07.12.2011
comment
Это полезный совет, но в моем случае я не думаю, что у меня был jsl на пути, поскольку я использовал команду which jsl для его поиска. - person Fernando Correia; 11.01.2012
comment
У меня в PATH есть jslint и jshint. По какой-то причине Syntastic не показывал обратную связь для jslint. Удаление jslint из PATH позволило Syntastic использовать вместо этого jshint, что помогло мне. - person Niels Bom; 09.10.2012

Я боролся с этой проблемой несколько дней, и SyntasticInfo не распознал jshint как доступную программу проверки даже после того, как я добавил let g:syntastic_javascript_checkers['jshint'] в свой .vimrc. Я использую Ubuntu 15.04 и следовал этому руководству по установке nvm, nodejs и jshint в Ubuntu. После того, как я это сделал, я обнаружил, что если я удалил строку filetype plugin indent on из своего .vimrc, а затем открыл .js файл, все работало отлично! Обобщить...

  1. следуйте руководству по ссылке выше
  2. добавить ~/.nvm/<version_number>/bin к пути в .bashrc
  3. удалить filetype plugin indent on из .vimrc
  4. добавить let g:syntastic_javascript_checkers['jshint'] к .vimrc
  5. :so % внутри vim
  6. открыть .js файл
  7. добавить filetype plugin indent on обратно в .vimrc
  8. теперь все волшебно работает
person Jordan Camp    schedule 03.02.2016