Помилка "Немає такого файлу чи каталогу" під час використання npm


34

Я встановив вузол і npm, використовуючи наведені тут інструкції

Мені вдалося успішно використовувати вузол. Однак, намагаючись встановити модуль вузла "Грізний", я отримую таку помилку:

$npm install formidable
bash: /usr/local/bin/npm: /usr/local/bin/node: bad interpreter: No such file or directory

Коли я роблю, which npmя отримую такий результат:

$which npm
/usr/local/bin/npm

Я не маю поняття, що тут не так з npm - будь-яка ідея, як я можу це виправити?


Ласкаво просимо до Ask Ubuntu! Я бачу, ви встановили Node в /usr/local/bin/. Пакети, як ви використовували в інструкціях, які ви зв'язали, не роблять цього. Я думаю, ви встановили ще один Вузол з джерела. Скажіть, будь ласка, всю історію.
gertvdijk

@gertvdijk Добре, спочатку був встановлений вузол 0.8.14. Я хотів оновити це до 0.8.18. Я тоді побіг, $sudo apt-get remove --purge nodejs npmале це не вийшло. node --versionпісля встановлення 0.8.18 все ще показали 0.8.14. Отже, те, що я зробив, було дотримуватися публікації, яку я зараз не можу знайти - в основному це проінструктовано, which nodeа за нею rm -r /usr/local/bin/...- в основному деякі файли, пов’язані з вузлом у цьому каталозі. Тепер, після цього, я знову встановив вузол, і це була оновлена ​​версія. Його працює нормально, але н.д.
користувач109187

Так, це відбувається, коли ви встановлюєте з джерела. Це заплутає ваше управління пакунками і вас як користувача. Будь ласка, встановлюйте програмне забезпечення лише як пакети, якщо ви не знаєте, що ви робите. Скористайтеся інструкціями щодо видалення зі сценаріями, якими ви користувались для встановлення цієї попередньої версії, щоб належним чином видалити її. І будь ласка, відредагуйте своє запитання, щоб надати додаткову інформацію. Це веб-сайт із питань запитань, а не дискусійний форум. :)
gertvdijk

@gertvdijk Я знайшов допис, який доручив видалити файли вручну - stackoverflow.com/a/5917184/1907800 . Шлях тут / usr / bin / node
user109187

Відповіді:


51

Беручи підказку @gertvdijk, я видалив NPM за допомогою сценарію:

rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*

(які можна знайти тут )

Навіть виконавши вище, я отримав ще одну помилку:

$ npm install formidable  
bash: /usr/local/bin/npm: No such file or directory

Отже, я забіг hash -rу термінал (згідно інструкцій, знайдених під NPM не буде працювати після оновлення ) і вуаля - він спрацював. NPM зараз працює!


1
Єдине корисне тут було виявлення hash, яке можна просто використовувати для вказівки на інший вузол / npm (що робити, якщо я хочу працювати з більш ніж однією версією вузла?)
user309383

Прекрасний гість-користувач.
LM_Fielding

4
хеш -р врятував мене
diogo.abdalla

що hashробить !?
Чанджунг Кім

11

Ubuntu та деякі дистрибутиви Linux встановлюють інтерпретатор вузла як /usr/bin/nodejs, а не /usr/local/bin/node.

Ви можете вирішити цю проблему, встановивши nodejs-legacyпакет, який створює симпосилання з /usr/bin/nodejsдо /usr/bin/node.

Рішення:

sudo apt-get install nodejs-legacy

Список літератури: nodejs-legacy package


1
Здається, nodejs-legacyбільше не існує.
Martín De la Fuente

2

Здається, ви встановили іншу версію Node з джерела деякий час раніше. Це вказується шляхом, /usr/local/binде він, здається, встановлений зараз.

  1. Видаліть встановлений з джерела. Про те, як це зробити, перегляньте інструкції з джерелом. Не існує єдиного способу видалення встановлених програмних скриптів, які не працюють з керуванням пакетами вашої системи.
  2. Встановити пакети, перелічені в інструкціях, до яких ви пов’язані у своєму запитанні.
  3. Перевірте, що which npmзараз вказано /usr/binяк шлях до встановлення.

Взагалі вам ніколи не доведеться встановлювати пакети з джерела. І якщо ви це зробите, будь ласка, пам’ятайте про наслідки, оскільки ви скасовуєте управління пакунками тут, це збентежить це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.