Подтвердить что ты не робот

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

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

Окружающая среда:

  • Ubuntu 11.04
  • VIM - Vi IMproved 7.3

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

  • Vundle
  • node.js
  • Node Менеджер пакетов
  • 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, col 1, 'blbla' не определена.
test.js: строка 4, col 1, 'x' не определена.
test.js: строка 4, col 5, 'nonono' не определена.
test.js: строка 6, col 1, 'a' не определена.
test.js: строка 7, col 1, 'b' не определена.
test.js: строка 8, col 5, 'a' не определена.
test.js: строка 8, col 10, 'b' не определена.
test.js: строка 8, col 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, похоже, установлены, но что-то, вероятно, отсутствует. Что бы это было?

4b9b3361

Ответ 1

Ниже приведена более подробная информация, есть конфигурация, которая связывает расширение файла с контрольной панелью,
в .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

Ответ 2

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

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

Ответ 3

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

  • следуйте приведенному выше руководству
  • добавить ~/.nvm/<version_number>/bin к пути в .bashrc
  • удалите filetype plugin indent on из .vimrc
  • добавить let g:syntastic_javascript_checkers['jshint'] в .vimrc
  • :so % внутри vim
  • открыть файл .js
  • добавьте filetype plugin indent on обратно в .vimrc
  • все магически работает сейчас