我怎样才能让jshint工作?

我使用sudo npm install -g jshint ,它似乎有效:

 $which jshint /usr/local/bin/jshint 

然而,运行jshint或其完整路径等效似乎没有做任何事情。 它也没有给出错误 – 它什么都不做:

 $jshint $jshint --help $jshint --verbose $jshint --debug $jshint admin.js $jshint admin.js --verbose $/usr/local/bin/jshint admin.js 

根据这个答案,我也尝试了symlinking 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. 

我在这里想念的是什么?

编辑:这是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 

官方回购是一团糟……

通过官方存储库安装Node和npm一直给我带来麻烦。 我怀疑这可能是由于依赖于node工具,当Ubuntu上的实际命令是nodejs ,这就是创建符号链接应该工作的原因。 它在我的虚拟机快速测试中对我有用,但由于它不适合你,让我们试试别的……

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

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

请执行以下操作以获得清晰的答案:

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

 sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g 

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

 sudo rm /usr/bin/node 

卸载通过Ubuntu的存储库安装的nodejsnpm的副本:

 sudo apt-get remove --purge nodejs npm 

清理任何其他残骸:

 sudo apt-get autoremove 

此时, which nodewhich nodejswhich npmwhich jshint都不返回任何内容。

重新安装节点,跳过官方存储库

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

 curl https://raw.githubusercontent.com/creationix/nvm/v0.15.0/install.sh | bash 

告诉你的shell使用nvm

 source ~/.nvm/nvm.sh 

然后安装节点版本

 nvm install 0.12 # or whatever the latest version is 

并告诉nvm您要使用哪个版本的Node

 nvm use 0.12 

现在您应该能够使用node命令运行Node,您应该能够在没有sudo情况下全局安装模块,并且最终应该使用jshint的工作副本。

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