Syntastic无法检测到JSHint作为可用的检查器。

6

我已经使用Pathogen安装了Syntastic。

Syntastic对于Python文件有效,但对于需要使用JSHint的JavaScript文件无效。 可以通过命令行或使用其他的vim插件如https://github.com/Shutnik/jshint2.vim来让JSHint生效。

which jshint  
/usr/local/share/npm/bin/jshint

→ jshint --version
jshint v2.1.10

→ echo $PATH
/usr/local/share/npm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

当我运行 :SyntasticInfo 命令时,它找不到任何检查器。
Syntastic info for filetype: javascript
Available checkers:
Currently active checker(s):

My vimrc

set nocompatible
filetype off
call pathogen#infect()
call pathogen#helptags()
filetype plugin indent on
syntax on

let g:syntastic_check_on_open=1
let g:syntastic_javascript_checkers = ['jshint']

我不知道我错过了什么,如果你有任何想法为什么 Syntastic 没有检测到 JSHint,请告诉我,谢谢。


你尝试过搜索“syntastic”和“jshint”吗?https://dev59.com/Bmw05IYBdhLWcg3wcRiu - glts
可能是如何配置Syntastic与JSHint?的重复问题。 - glts
是的,我已经尝试并看到了这篇文章,但它对我不起作用。我只是想知道为什么JSHint不是一个可用的检查器。 - towane
1个回答

21

简而言之,Syntastic需要jshint的路径。


我在Windows 8上遇到了类似的问题。安装了nodejs v0.10.22和syntastic >= 3.2.0之后,Vim命令:SyntasticInfo会给我以下信息:

Syntastic: active mode enabled
Syntastic info for filetype: vim
Available checker(s): 
Currently enabled checker(s):

jshint.com/docs上的文档建议这样安装该模块已足够。

$ npm install jshint -g

这是正确的,除了一个有点令人惊讶的含义,-g标志会在系统上全局安装JSHint。它指的是在用户的%AppData%文件夹中:

(abbreviated output from previous command)
C:\Users\jaroslav\AppData\Roaming\npm\jshint -> \
C:\Users\jaroslav\AppData\Roaming\npm\node_modules\jshint\bin\jshint
jshint@2.3.0 C:\Users\jaroslav\AppData\Roaming\npm\node_modules\jshint
├── console-browserify@0.1.6
├── underscore@1.4.4
├── shelljs@0.1.4
├── minimatch@0.2.12 (sigmund@1.0.0, lru-cache@2.5.0)
└── cli@0.4.5 (glob@3.2.7)

来自Syntastic FAQ的另一份文档如下:

问:我安装了Syntastic,但它没有报告任何错误......

答:最可能的原因是它需要的语法检查器都没有安装。例如:Python需要安装flake8、pyflakes或pylint其中之一,并将其添加到$PATH中。要查看支持哪些可执行文件,请查看syntax_checkers//*.vim文件。 请注意,别名无效,必须在$PATH中提供实际可执行文件。符号链接可以使用。运行 :SyntasticInfo 可以查看 Syntastic 的可用检查器。

解决方案是将jshint命令的路径设置为~/.vimrc中的路径:

 let g:syntastic_jshint_exec='C:\Users\jaroslav\AppData\Roaming\npm\jshint.cmd'

:source $HOME/_vimrc
:SyntasticInfo
Syntastic: active mode enabled
Syntastic info for filetype: javascript
Available checker(s): jshint
Currently enabled checker(s): jshint

或者,可以这样做:

> cmd.exe
> cd C:\Users\jaroslav\AppData\Roaming\npm
> setx PATH "%cd%:%PATH%"

并且 let g:syntastic_jshint_exec='jshint.cmd'。我没有尝试使用 %PATH% 的最后一个解决方案,因为 Windows 不喜欢过长的 %PATH% 变量。

希望这能为您节省一些时间。


请注意,Syntastic 要求 jshint >= 1.0,低于此版本将无法注册。 - ojreadmore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接