如何在Linux Mint 17 Cinnamon的SublimeLinter中启用JSHint?

时间:2014-11-21 15:54:12

标签: sublimetext3 jshint linuxmint sublimelinter

所需行为

Linl of .js文件与Sublime Text 3。

实际行为

没有掉毛。

例如,以下显示没有错误:

var x = "" 

重现步骤

环境

  • Linux Mint 17 Cinnamon
  • Sublime Text Build 3065
  • Tools > SublimeLinter > Lint Mode > "Background"
  • Tools > SublimeLinter > Mark Style > "Fill"

在Sublime Text中(安装SublimeLinter和JSHint插件)

  • CTRL + SHIFT + P
  • 包控制:安装包
  • 安装SublimeLinter
  • 安装SublimeLinter jshint插件

在命令行

  • 使用以下命令安装node.js,npm和jshint

    sudo apt-get install nodejs npm
    sudo npm install -g jshint

退出并重新启动Sublime Text。

疑难解答

在命令行:

hash -r
which jshint

returns

/usr/local/bin/jshint

我也试过这个解决方案(https://stackoverflow.com/a/21203179/1063287),涉及手动修改Preferences > Package Settings > SublimeLinter > "Settings - User"中的路径并重新启动Sublime Text但没有变化:

"paths": {
    "linux": ["/usr/local/bin/jshint"],
    "osx": [],
    "windows": []
},

文档参考

关于如何安装jshint插件:

https://github.com/SublimeLinter/SublimeLinter-jshint

更新

我只是在命令行中运行它 - 结果可能有助于排除故障:

jshint --version
/usr/bin/env: node: No such file or directory

这也出现在Sublime Text Console中:

SublimeLinter: WARNING: no jshint version could be extracted from:
/usr/bin/env: node: No such file or directory

2 个答案:

答案 0 :(得分:5)

这似乎使JSHint工作 - 但是如果有人能够确认这是最好的方法,那就太棒了:

https://github.com/joyent/node/issues/3911#issuecomment-8956154

  

我发现这通常是一个错误的错误,如果你从一个安装   包管理器你可以称为nodejs,所以你只需要   符号链接就像这样" ln -s / usr / bin / nodejs / usr / bin / node"

注意:使用此解决方案,无需对Preferences > Package Settings > SublimeLinter > "Settings - User"中的路径进行任何调整。

答案 1 :(得分:5)

您(OP)提供的解决方案将起作用,但我会给出一些解释,告诉您如何验证问题,提供一些其他选项以及一些最佳实践(这就是您的意思)在你发布答案时寻求。

问题

问题是jshint可执行文件正在寻找使用"节点"解释器,系统找不到与名称" node"匹配的可执行文件。在你的道路上。 (我相信" node"以前曾是标准名称,但现在它通常被称为使用" nodejs"因为有关于"节点& #34;名称是通用的,与其他可执行文件冲突。)

以下是如何查看正在发生的事情...在终端上,执行以下操作: - 通过执行" jshint"找到jshint可执行文件的路径。 (你应该在" / usr / local / bin"中找到它) - 通过发出" cat / usr / local / bin"来查看内容。您将看到第一行指定要使用的解释器,即" node" (不是" nodejs")。

原因

目前,当您使用包管理器安装Node.js时,Debian包名为" nodejs"创建可执行文件" / usr / bin / nodejs"。因此,任何其他可执行文件指定"节点"可执行文件找不到并且不会工作。

修复

您有很多选择:

  1. 最快捷,最简单。为"节点"创建符号链接(实际上是"快捷方式")指向" nodejs"。你的答案中有一个版本。通常认为,将此链接放在PATH中除/ usr / bin之外的位置(例如/ usr / local / bin中)是更好的做法。该目录受到保护,因此您需要超级用户权限才能在目标中创建链接。因此,要发出的命令是:

    sudo ln -s /usr/bin/nodejs /usr/local/bin/node"
  2. 或者,如果您所在的系统还没有Node.js(或者您删除了当前的软件包),那么当您通过软件包管理器安装它时,请使用" nodejs-遗留"包(而不是nodejs)。此包实际上会自动为您创建一个链接。如果您已安装Node.js,则应先将其删除。

    • 删除" nodejs"包:
      sudo apt-get remove nodejs
    • 安装" nodejs-legacy" (带链接的那个)
      sudo apt-get install nodejs-legacy
  3. 最后,您可以手动安装Node.js或构建它。这更复杂,我不想在这里解释所有这些。

  4. 验证

    您可以通过发出命令" jshint --version"来验证jshint现在可以运行,现在看起来应该是这样的:     

    $ jshint --version
        jshint v2.5.10

    快乐的Linting!