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

Я установил 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 ответ

Решение

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

Установка Node и 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 все должны ничего не возвращать.

Переустановите Node, пропустив официальные репозитории

Возьмите последнюю версию 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, какую версию Node вы хотите использовать

nvm use 0.12

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

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

Другие вопросы по тегам