我使用安装了 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
我也尝试过对 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
答案1
官方的 repos 很乱...
通过官方存储库安装 Node 和 npm 总是给我带来麻烦。我怀疑这可能是由于工具依赖于node
,而 Ubuntu 上的实际命令是nodejs
,这就是为什么要创建符号链接应该有效。它在我虚拟机中的快速测试中对我有效,但是既然它对你不起作用,让我们尝试其他方法...
因此,以不同的方式安装 Node.JS
我通常更喜欢使用以下方式在 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
删除符号链接节点文件夹:
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
都应该返回零。
重新安装 Node,跳过官方存储库
获取 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
然后安装一个node版本
nvm install 0.12 # or whatever the latest version is
并告诉 nvm 你想使用哪个版本的 Node
nvm use 0.12
现在您应该能够使用node
命令运行 Node,您应该能够在没有的情况下全局安装模块sudo
,并且您最终应该得到 jshint 的工作副本。
如果您不想nvm use v0.12
每次启动新的终端会话时都运行,则可以将nvm use v
其添加到~/.bashrc
。v
没有什么特别的,它只会匹配v*
并找到最新版本。或者,您可以硬编码特定版本。