Como posso fazer o jshint funcionar?

7

Eu instalei o jshint usando sudo npm install -g jshint e parece ter funcionado:

$which jshint
/usr/local/bin/jshint

No entanto, a execução de jshint ou seu caminho completo equivalente parece não fazer nada. Também não dá erro - simplesmente não faz nada:

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

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

Eu também tentei ligar simbolicamente os nodejs por esta resposta :

$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.

O que estou perdendo aqui?

Edit: aqui está a saída de apt-cache policy nodejs npm . Estou usando apenas os pacotes padrão do Ubuntu 14.04, então não há nada muito especial sobre isso:

└─>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
    
por Jon 02.09.2014 / 17:18

1 resposta

9

As recompras oficiais são uma bagunça ...

Instalar o Node e o npm através dos repositórios oficiais sempre me deu problemas. Eu suspeito que isso pode ser devido a ferramentas dependendo de node , quando o comando real no Ubuntu é nodejs , e é por isso que criar um link simbólico deve funcionar. Funcionou para mim no meu teste rápido em uma máquina virtual, mas como não funcionou para você, vamos tentar outra coisa ...

Então, instale o Node.JS de uma maneira diferente

Geralmente eu prefiro instalar o Node no Ubuntu usando o NVM. Isso evita que o problema do comando node não seja definido no Ubuntu, e evita a confusão de permissões que requer o uso de sudo para instalar módulos npm.

Faça o seguinte para voltar a uma lista limpa:

Remova todos os módulos globais que você instalou com npm ( instruções aqui ):

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

Remover pasta do nó com link simbólico:

sudo rm /usr/bin/node

Desinstale as cópias de nodejs e npm que você instalou nos repositórios do Ubuntu:

sudo apt-get remove --purge nodejs npm

Limpar qualquer outro lixo:

sudo apt-get autoremove

Nesse momento, which node , which nodejs , which npm e which jshint não devem retornar nada.

Reinstale o nó, ignorando os repositórios oficiais

Pegue a última cópia do NVM (talvez você precise sudo apt-get install curl primeiro):

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

Diga ao seu shell para usar nvm

source ~/.nvm/nvm.sh

Em seguida, instale uma versão do nó

nvm install 0.12 # or whatever the latest version is

E diga ao nvm qual versão do Node você quer usar

nvm use 0.12

Agora você deve ser capaz de rodar o Node com o comando node , você deve ser capaz de instalar módulos globalmente sem sudo , e você deve acabar com uma cópia de trabalho do jshint.

Se você não quiser executar nvm use v0.12 toda vez que iniciar uma nova sessão de terminal, poderá adicionar nvm use v ao seu ~/.bashrc . O v não é especial, apenas corresponderá a v* e encontrará a versão mais recente. Como alternativa, você pode codificar uma versão específica.

    
por Michael Martin-Smucker 03.10.2014 / 22:31