我怎样才能让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的存储库安装的nodejs
和npm
的副本:
sudo apt-get remove --purge nodejs npm
清理任何其他残骸:
sudo apt-get autoremove
此时, which node
, which nodejs
, which npm
, which 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 v
。 v
不是特别的,它只匹配v*
并找到最新版本。 或者,您可以对特定版本进行硬编码。