6

我已经用 Pathogen 安装了 Syntastic。

Syntastic 适用于 Python 文件,但不适用于带有 JSHint 的 JavaScript 文件。JSHint 通过命令行或与https://github.com/Shutnik/jshint2.vim等其他 vim 插件一起工作

→ 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):

我的 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。谢谢

4

1 回答 1

21

长话短说; Syntastic 需要 jshint 的路径。


我在 Windows 8 上遇到了类似的问题。安装nodejsv0.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 但它没有报告任何错误...

A.最可能的原因是没有安装它需要的语法检查器。例如:python 需要在 $PATH 中安装 flake8、pyflakes 或 pylint。要查看支持哪些可执行文件,只需查看 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% 的最后一个解决方案,因为 Winders 不喜欢长 %PATH% 变量。

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

于 2013-11-24T10:30:05.243 回答