kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

SublimeLinter-jshintが動かない

SublimeLinter、SublimeLinter-jshintをインストールしたが、インストール直後は動かなかったので
設定メモです。

  • Ubuntu 64bit 14.04
  • nodebrewでインストールしたnode、npm
  • Sublime Text 3
  • jshintはnpmでグローバル環境(/home/foo/.nodebrew/current/bin)にインストール済み
Preferences → Package Settings → SublimeLinter → Settings – User

で、設定ファイル表示します。
ファイルを表示した直後は、ほぼ何も記述されていないので、Defaultからコピーして持ってくる。
paths-linuxにjshintまでのパスを追記しましたが、動きませんでした。

{
    "user": {
        "debug": false,
        "delay": 0.25,
        "error_color": "D02000",
        "gutter_theme": "Packages/SublimeLinter/gutter-themes/Knob/simple/Knob - simple.gutter-theme",
        "gutter_theme_excludes": ,
        "lint_mode": "background",
        "linters": {
            "jshint": {
                "@disable": false,
                "args": ,
                "excludes": ,
                "node": true
            }
        },
        "mark_style": "outline",
        "no_column_highlights_line": false,
        "paths": {
            "*": ,
            "linux": [
                "~/.nodebrew/current/bin"
            ],
            "osx": ,
            "windows": 
        },
        "python_paths": {
            "linux": [
                "/usr/bin"
            ],
            "osx": ,
            "windows": 
        },
        "rc_search_limit": 3,
        "shell_timeout": 10,
        "show_errors_on_save": false,
        "show_marks_in_minimap": true,
        "syntax_map": {
            "html (django)": "html",
            "html (rails)": "html",
            "html 5": "html",
            "php": "html",
            "python django": "python"
        },
        "warning_color": "DDB700",
        "wrap_find": true
    }
}

この時点では、何が動かないか分からなかったので、デバッグモードで原因を確認します。
設定ファイルで下記を変更

"debug": true,

変更あと、Sublime Textを再起動後、コンソールを表示します。

Show → Console

以下のメッセージが表示されました。

SublimeLinter: computed PATH using /bin/bash:
~/.nodebrew/current/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
 
SublimeLinter: jshint version query: /home/foo/.nodebrew/current/bin/jshint --version 
SublimeLinter: WARNING: no jshint version could be extracted from:
/usr/bin/env: node: そのようなファイルやディレクトリはありません

WARNINGメッセージをGoogle先生で調べても、Windowsの話しか出てこなかったので、
ハマりましたが、どうやら、path-linuxは、絶対パスを記述する必要があるようでした。
設定値を

~/.nodebrew/current/bin

から

/home/foo/.nodebrew/current/bin

に変更したら、動くようになりました。

変更後のデバッグメッセージ

SublimeLinter: user shell: /bin/bash 
SublimeLinter: computed PATH using /bin/bash:
~/.nodebrew/current/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
SublimeLinter: jshint version query: ~/.nodebrew/current/bin/jshint --version 
SublimeLinter: jshint version: 2.5.5 
SublimeLinter: jshint: (>= 2.5.0) satisfied by 2.5.5 
SublimeLinter: jshint activated: ~/.nodebrew/current/bin/jshint