我怎样才能让 jshint 工作?

Jon*_*han 7 nodejs 14.04 jshint

我使用 安装了 jshint sudo npm install -g jshint,它似乎奏效了:

$which jshint
/usr/local/bin/jshint
Run Code Online (Sandbox Code Playgroud)

然而,运行jshint或其完整路径等价物似乎没有任何作用。它也不会出错——它什么都不做:

$jshint
$jshint --help
$jshint --verbose
$jshint --debug

$jshint admin.js
$jshint admin.js --verbose
$/usr/local/bin/jshint admin.js
Run Code Online (Sandbox Code Playgroud)

我还尝试根据此答案对nodejs 进行符号链接:

$sudo ln -s /usr/bin/nodejs /usr/bin/node

$jshint admin.js --verbose
$jshint admin.js
$jshint --help
$man jshint
No manual entry for jshint
See 'man 7 undocumented' for help when manual pages are not available.
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

编辑:这是来自apt-cache policy nodejs npm. 我只是使用标准的 Ubuntu 14.04 包,所以没有什么特别之处:

??>apt-cache policy nodejs npm
nodejs:
  Installed: 0.10.25~dfsg2-2ubuntu1
  Candidate: 0.10.25~dfsg2-2ubuntu1
  Version table:
 *** 0.10.25~dfsg2-2ubuntu1 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
        100 /var/lib/dpkg/status
npm:
  Installed: 1.3.10~dfsg-1
  Candidate: 1.3.10~dfsg-1
  Version table:
 *** 1.3.10~dfsg-1 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
        100 /var/lib/dpkg/status
Run Code Online (Sandbox Code Playgroud)

Mic*_*ker 9

官方回购是一团糟......

通过官方存储库安装 Node 和 npm 总是给我带来麻烦。我怀疑这可能是由于取决于 的工具node,当 Ubuntu上的实际命令是 时nodejs,这就是创建符号链接应该起作用的原因。在我的虚拟机快速测试中它对我有用,但由于它对你不起作用,让我们尝试其他方法......

所以,以不同的方式安装 Node.JS

我通常更喜欢使用NVM在 Ubuntu 上安装 Node 。这避免了node命令未在 Ubuntu 上定义的问题,并且避免需要使用sudo来安装 npm 模块的权限混乱

执行以下操作以恢复原状:

删除您使用 npm 安装的所有全局模块(此处的说明):

sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}'  | sudo xargs npm remove -g
Run Code Online (Sandbox Code Playgroud)

删除符号链接节点文件夹:

sudo rm /usr/bin/node
Run Code Online (Sandbox Code Playgroud)

卸载您通过 Ubuntu 的存储库安装的nodejs和的副本npm

sudo apt-get remove --purge nodejs npm
Run Code Online (Sandbox Code Playgroud)

清理任何其他残留物:

sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)

此时,which node, which nodejs, which npm, 和which jshint都应该不返回任何内容。

重新安装 Node,跳过官方仓库

获取 NVM 的最新副本(您可能需要sudo apt-get install curl先):

curl https://raw.githubusercontent.com/creationix/nvm/v0.15.0/install.sh | bash
Run Code Online (Sandbox Code Playgroud)

告诉你的外壳使用 nvm

source ~/.nvm/nvm.sh
Run Code Online (Sandbox Code Playgroud)

然后安装一个节点版本

nvm install 0.12 # or whatever the latest version is
Run Code Online (Sandbox Code Playgroud)

并告诉 nvm 你想使用哪个版本的 Node

nvm use 0.12
Run Code Online (Sandbox Code Playgroud)

现在您应该能够使用该node命令运行 Node ,您应该能够在没有sudo.

如果您不想nvm use v0.12每次启动新的终端会话时都运行,您可以添加nvm use v到您的~/.bashrc. 在v不是特殊的,它只会匹配v*,找到最新的版本。或者,您可以对特定版本进行硬编码。