5

期望的行为

使用 Sublime Text 3 对 .js 文件进行 Linting。

实际行为

没有发生掉毛。

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

var x = "" 

重现步骤

环境

  • Linux Mint 17 肉桂
  • 崇高文本构建 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 控制台中:

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

2 回答 2

5

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

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

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

注意:使用此解决方案,无需对Preferences > Package Settings > SublimeLinter > "Settings - User".

于 2014-11-22T06:52:16.147 回答
5

您(OP)提供的解决方案将起作用,但我会给出一些解释,向您展示如何验证问题,提供一些其他选项,也许还有一些最佳实践(这是您在发布时所寻求的回答。

问题

问题是 jshint 可执行文件正在使用“node”解释器运行,并且系统在您的路径中找不到与名称“node”匹配的可执行文件。(我相信“node”以前是标准名称,但现在通常使用“nodejs”来指代它,因为人们担心“node”名称是通用名称并与其他可执行文件冲突。)

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

原因

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

修复

你有很多选择:

  1. 最快最简单的。为指向“nodejs”的“node”创建一个符号链接(实际上是一个“快捷方式”)。您的答案中有一个版本。人们普遍认为,最好将此链接放在 PATH 中的某个位置,而不是 /usr/bin 中,例如 /usr/local/bin。该目录受到保护,因此您需要超级用户权限才能在目标中创建链接。因此,要发出的命令是:

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

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

验证

您可以通过发出命令“jshint --version”来验证 jshint 现在是否可以运行,现在应该如下所示:

$ jshint --version
    jshint v2.5.10

林丁快乐!

于 2014-11-30T05:19:48.393 回答