Как я могу заставить jshint работать?

7

Я установил 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
    
задан Jon 02.09.2014 в 15:18
источник

1 ответ

9

Официальные репозитории - беспорядок ...

Установка узла и npm через официальные репозитории всегда вызывала у меня проблемы. Я подозреваю, что это может быть связано с инструментами в зависимости от node , когда фактическая команда Ubuntu равна nodejs , поэтому создание символической ссылки должно работать. Он работал для меня в моем быстром тестировании на виртуальной машине, но так как это не сработало для вас, давайте попробуем что-нибудь еще ...

Итак, установите Node.JS другим способом

Обычно я предпочитаю устанавливать Node на Ubuntu с помощью NVM . Это позволяет избежать того, что команда 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

Удалите копии nodejs и npm , которые вы установили через репозитории Ubuntu:

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

Скажите своей оболочке использовать nvm

source ~/.nvm/nvm.sh

Затем установите версию узла

nvm install 0.12 # or whatever the latest version is

И скажите nvm, какую версию узла вы хотите использовать

nvm use 0.12

Теперь вы должны иметь возможность запускать узел с помощью команды node , вы должны иметь возможность устанавливать модули по всему миру без sudo , и вы должны получить рабочую копию jshint.

Если вы не хотите запускать nvm use v0.12 при каждом запуске нового сеанса терминала, вы можете добавить nvm use v к вашему ~/.bashrc . v не является особенным, он будет просто соответствовать v* и найти последнюю версию. В качестве альтернативы вы можете жестко программировать определенную версию.

    
ответ дан Michael Martin-Smucker 03.10.2014 в 20:31
источник