Неможливо встановити NodeJs: / usr / bin / env: node: Немає такого файлу чи каталогу


302

Я намагаюся встановити nodeJs в свій Ubuntu 14.04 для того, щоб використовувати GruntJs.

Я читав про різні способи виконання Ubuntu ( проблеми? ), Тому це я зробив для того, щоб його встановити:

sudo apt-get install npm

sudo npm install -g grunt-cli

Ввівши груку після цього, я отримав помилку:

/usr/bin/env: node: No such file or directory

Отже, я спробував:

curl -sL https://deb.nodesource.com/setup | sudo bash -

sudo apt-get install -y nodejs

sudo apt-get update

І, намагаючись знову, і все-таки отримую помилку, я спробував:

sudo add-apt-repository https://launchpad.net/~chris-lea/+archive/node.js/

sudo apt-get install -y nodejs

Я отримав це повідомлення:

nodejs is already the newest version.
0 to upgrade, 0 to newly install, 0 to remove and 3 not to upgrade.

Я спробував очистити про всяк випадок:

sudo apt-get autoremove

Але немає, помилка все ж є: коли я набираю грухті, я все одно отримую /usr/bin/env: node: No such file or directory

Що я повинен зробити?

Відповіді:


793

Проведення символьної посилання вирішує проблему:

ln -s /usr/bin/nodejs /usr/bin/node

(Моя подяка та +1 голос за відповідь bodokaiser ).


97
sudo apt-get install nodejs-legacyтакож створює це посилання, дивіться опис на пакунках.debian.org
sid/nodejs-legacy

1
Символьна посилання вирішила проблему та заощадила багато часу на розробку. Дякую!
Farzad YZ

Це виправлення є серйозним рятівником. Тим більше, якщо ви дотримуєтесь посібника з дозволу на виправлення тут docs.npmjs.com/getting-started/fixing-npm-permissions
Джош Франкель

Дякую! Це врятувало мене після обіду, намагаючись налаштувати додаток для вузла на Google хмарі Linux.
Іван

1
Вам слід скористатися, which nodeщоб отримати правильний шлях до вашого вузла. Отже команда була бln -s "$(which node)" /usr/bin/node
technogeek1995

117

Проблема не у версії вузла. Натомість це спосіб встановлення NodeJS за замовчуванням в Ubuntu. Під час запуску програми Node в Ubuntu вам потрібно запустити nodejs somethign.jsзамістьnode something.js

Отже, ім'я програми, викликане в терміналі, є nodejsі ні node. Тому існує потреба в лінк просто вперед всіх команд , отриманих в nodeдо nodejs.

ln -s /usr/bin/nodejs /usr/bin/node

6
Вам потрібно буде запустити цю команду з sudo, якщо ви отримуєте помилку "ln: не вдалося створити символічне посилання" / usr / bin / node '"
Suraj Dubey

ln -s / usr / bin / nodejs / usr / bin / node
rd_

54

Я думаю, вам слід оновити останню версію вузла

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

1
Просто підказка; відступ ваших рядків коду на 4 пробіли;) також nне є командою, яка асоціюється з Node.JS.
Qix - МОНІКА ПОМИЛИЛА

@David на основі опису пакету в NPM : "Інтерактивно керуйте всіма версіями вашого вузла"
frdmn

Вирішили проблему для мене
kritizerz

я скопіював laravelпроект з windowsмашини ubuntu 16.04і laravel mixмав проблеми з npm run watchІ це рішення працює для мене , і тепер проблема пішла
AN

29

якщо ви можете отримати доступ до вузла на терміналі ubuntu за допомогою команди nodejs, то цю проблему можна вирішити просто за допомогою -створення символічного посилання nodejs та node за допомогою

ln -s /usr/bin/nodejs /usr/bin/node

і це може вирішити проблему




9

Я виявив, що це часто помилка помилки, якщо ви встановлюєте з менеджера пакунків, ваш кошик може називатися nodejs, тому вам просто потрібно позначити його так

ln -s /usr/bin/nodejs /usr/bin/node

1
Замість того, щоб додавати негативні відгуки, повідомте мені тут у коментарі, що не так, тож я можу вам у цьому допомогти. Оскільки в створенні символьної посилання немає нічого поганого, особливо якщо це допомагає вам краще керувати речами.
Ахмад Авей

1
Я для себе віддаю перевагу такому підходу. Це чисто.
Мухаммед Гельбана

8

Якщо у вас вже встановлено nodejs (позначте which nodejs), і ви не хочете інсталювати інший пакет, ви можете, як root:

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 99

Це правильний спосіб Debian.
Тонін

6

Коли я використовував gulp, я отримав цю помилку.

~$ gulp

/ usr / bin / env: 'node': Немає такого файлу чи каталогу

Це було видалено виконанням наступної команди, яку ви повинні мати на увазі, що / usr / bin каталог має всі дозволи.

~$ ln -s /usr/bin/nodejs /usr/bin/node

це працює для мене ..


5

Залежно від того, як ви встановили свій вузол, більшість часу він може бути не в / usr / bin /, в моєму випадку саме я використовував nvm для встановлення, щоб мій вузол був у ./nvm/versions.

За допомогою цієї команди which nodeя знайшов шлях, але для полегшення роботи можна виконати цю команду.

nodepath=$(which node); sudo ln -s $nodepath /usr/bin/node

вищевказана команда отримає розташування вашого вузла та створить для вас посилання.


5

Для цього є два рішення:

a) Встановіть змінну PATH, щоб вона включала "/ usr / local / bin"

export PATH="$PATH:/usr/local/bin"

b) Створіть символьне посилання на "/ usr / bin", яке вже є у вашій PATH

ln -s /usr/bin/nodejs /usr/bin/node

Я сподіваюся, що це допомагає.


4

Хоча ln -sце очевидний найпростіший виправлення, пояснення:

Через конфлікт з іншим пакетом виконуваний файл із сховищ Ubuntu називається nodejs замість node. Майте це на увазі під час роботи програмного забезпечення.

Ця порада з’являється під час встановлення sudo apt-get install nodejs.

Тож якийсь інший відомий інструмент (я не знаю, що він робить. Хоча він відомий у сховищах ubuntu, він не встановлений за замовчуванням у 16.04) займає це простір імен.

Було б добре, якби Ubuntu запропонував пораду, як це виправити «чисто», якби не вручну, зробивши те, що в іншому випадку зробить пакет. (зіткнення залишається зіткненням ... якщо +, коли воно відбудеться)


1
@ відповідь tom-hale - це спосіб Ubuntu для цього. Використовуйте альтернативи, щоб вказати правильний вузол
kervin


2

Для мого випадку зв'язку було НЕ працювати наступним чином

ln -s / usr / bin / nodejs / usr / bin / node

Але ви можете відкрити / usr / local / bin / lessc як корінь і змінити перший рядок з вузла на nodejs.

- #! / usr / bin / env вузол

+ #! / usr / bin / env nodejs


2

Дотримуйтесь цих команд, щоб усунути проблему.

У терміналі:

  1. Очистіть весь кеш NPM:

    $ sudo npm cache clean -f
  2. sudo npm install -g n
  3. Встановіть останню стабільну версію Node.js:

    sudo n stable

Тепер була встановлена ​​остання версія Node.js. Перевірте версію, використовуючи:

node -v


0

Для мене прийнята відповідь ще не спрацювала. Я почав, як тут запропоновано:

ln -s /usr/bin/nodejs /usr/bin/node

Після цього я отримав таку помилку:

/usr/local/lib/node_modules/npm/bin/npm-cli.js:85 нехай notifier = вимагає ('update-notifier') ({pkg}) ^^^

SyntaxError: Блоковані декларації (нехай, const, функція, клас) ще не підтримуються поза суворим режимом на export.runInThisContext (vm.js: 53: 16) в Module._compile (module.js: 374: 25) у Object. Module._extensions..js (module.js: 417: 10) на Module.load (module.js: 344: 32) у Function.Module._load (module.js: 301: 12) на Function.Module.runMain ( module.js: 442: 10) при запуску (node.js: 136: 18) у node.js: 966: 3

Рішенням було завантажити найновішу версію вузла з https://nodejs.org/en/download/ .

Тоді я зробив:

sudo tar -xf node-v10.15.0-linux-x64.tar.xz --directory /usr/local --strip-components 1

Тепер оновлення було остаточно успішним: npm -vзмінилося з 3.2.1 на 6.4.1

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