ошибка просмотра / usr / bin / env: node: нет такого файла или каталога

85

Я установил node js и npm через apt-get install и все зависимости, затем установил browserify

npm install browserify -g

он проходит через процесс и кажется, что он установлен правильно, но когда я пытаюсь сделать простой пакет в этом пошаговом руководстве

Я получаю сообщение об ошибке:

/ usr / bin / env: node: нет такого файла или каталога

введите описание изображения здесь

Эдуардо Деннис
источник
хм, вы должны проверить, находится ли исполняемый файл узла в / usr / bin или / usb / bin / env, по крайней мере, это проблема, связанная с операционной системой. Вы можете решить эту проблему, установив browserify local.
bodokaiser 02
мой исполняемый файл browserfy находится в / usr / local / bin /, но вызывает ли он что-то еще, путь к которому испорчен?
Эдуардо Деннис
3
ах, вам нужно создать символическую ссылку nodejs на node на ubuntu. Ubuntu устанавливает узел как nodejs, тогда вам нужно сделать что-то вроде «ln -s / usr / bin / nodejs / usr / bin / node», чтобы системы также
находили
1
что решило это: -P Я ломал себе голову над этим в течение последнего часа, не могли бы вы указать формат ответа, чтобы принять?
Эдуардо Деннис
1
рад, что это сработало, не уверен, действительно ли это проблемы, поэтому я прокомментировал первым :)
bodokaiser

Ответы:

246

Некоторые дистрибутивы Linux устанавливают nodejs не как исполняемый файл «node», а как «nodejs».

В этом случае вам нужно вручную установить ссылку на «узел», поскольку многие пакеты запрограммированы после двоичного файла «узел». Нечто подобное происходит и с «python2», не связанным с «python».

В этом случае вы можете сделать простую символическую ссылку. Для дистрибутивов Linux, которые устанавливают двоичные файлы пакетов, /usr/binвы можете сделать

ln -s /usr/bin/nodejs /usr/bin/node
бодокайзер
источник
5
Это не решение для Ubuntu 14.04, потому что /usb/sbin/nodeэто ax24-node (не связанный с nodejs). Просто символическая ссылка на /usr/bin/nodeне сработает, потому что на /usr/sbin/nodeпервом месте$PATH
Гарет
8
правильный способ решить эту проблему - использовать update-alternatives. см. мой ответ здесь stackoverflow.com/a/24592328/454615
airtonix
1
на самом деле думать об этом больше ... создание символических ссылок на двоичные файлы, как это, - отличная привычка, если вы хотите сломать свою систему.
airtonix
да, я заметил, что это действительно ломает его тонкими способами, вы нашли лучшее решение?
Эдуардо Деннис
1
@EduardoDennis да, пользуйся update-alternatives. он существует именно для этих ситуаций.
airtonix
52

Новый ответ:

  1. Удалите все пакеты nodejs, которые вы установили через системный менеджер пакетов (dnf, apt-get и т. Д.), Удалите все глупые символические ссылки, которые вы воссоздали при каждом обновлении (смеется).
  2. Установите NVM,
  3. используйте nvm для установки nodejs: nvm install 6

Старый ответ:

Любые разговоры о создании символических ссылок или установке какого-либо другого пакета узлов являются надуманными и несостоятельными.

Правильный способ решить эту проблему:

  1. просто установите пакет nodejs с помощью apt-get, как будто у вас уже есть
  2. используйте, update-alternativesчтобы указать, что ваш двоичный файл nodejs отвечает за#!/usr/bin/env node

Вот так :

sudo apt-get install nodejs
sudo update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100

Теперь это становится устойчивым при обновлении пакетов, дистрибутивных обновлениях и т. Д.

Airtonix
источник
Это решение моей проблемы stackoverflow.com/questions/26155795/…
Алон Кармель
Спасибо, отличное решение, трюк с символическими ссылками чаще всего повторяется в сети, но у меня он не сработал.
Эмилия Тыл
Фактический правильный ответ сейчас - использовать NVM в Linux и Nodist в Windows.
airtonix 01
35

Беги apt-get install nodejs-legacy.

Некоторые дистрибутивы Linux изменили имя двоичного файла node.js, что сделало его несовместимым с множеством пакетов node.js. Пакет nodejs-legacyпредоставляет символическую ссылку для решения этой проблемы.

Алекс
источник
2
Это решение для Ubuntu 14.04, потому что /usb/sbin/nodeэто ax24-node (не связанный с nodejs). Просто символическая ссылка на /usr/bin/nodeне сработает, потому что на /usr/sbin/nodeпервом месте стоит$PATH
Гарет
Выручил меня. Благодарность!
Lapidus
apt-get install nodejs-legacy. говорит, что для Windows пользователь "apt-get" не распознается как внутренняя или внешняя команда, работающая программа или командный файл.
Swift
7

Вы также можете установить Nodejs с помощью NVM или Nodejs Version Manager . Использование диспетчера версий дает много преимуществ . Одним из них является то, что вам не нужно беспокоиться об этой проблеме.


Инструкции:


sudo apt-get update
sudo apt-get install build-essential libssl-dev

После установки необходимых пакетов вы можете загрузить сценарий установки nvm со страницы проекта на GitHub. Номер версии может быть другим, но в целом вы можете скачать и установить ее со следующим синтаксисом:

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

Это загрузит скрипт и запустит его. Программа установит программное обеспечение в подкаталог вашего домашнего каталога по адресу ~/.nvm. Он также добавит в ваш ~/.profileфайл необходимые строки для использования файла.

Чтобы получить доступ к функциям nvm, вам нужно выйти и снова войти в систему, или вы можете создать файл ~ / .profile, чтобы ваш текущий сеанс знал об изменениях:

source ~/.profile

Теперь, когда у вас установлен nvm, вы можете установить изолированные версии Node.js.

Чтобы узнать, какие версии Node.js доступны для установки, введите:

nvm ls-remote
. . .

v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

Как видите, последняя версия на момент написания - v0.11.14. Вы можете установить это, набрав:

nvm install 0.11.14

Обычно nvm переключается на использование последней установленной версии. Вы можете явно указать nvm использовать только что загруженную версию, набрав:

nvm use 0.11.14

Когда вы устанавливаете Node.js с помощью nvm, исполняемый файл называется node. Вы можете увидеть версию, которая в настоящее время используется оболочкой, набрав:

node -v

Полный учебник можно найти здесь

Эдуардо Деннис
источник
да, плюс один для менеджеров версий среды. определенно гораздо лучший ответ, чем мой, несмотря на то, что мы оба - правильный способ сделать это. Я скажу, что nvm больше нацелен на интерактивные рабочие станции, а не на производственные серверы (но я не понимаю, почему нельзя использовать его там) ... лично я более склонен использовать образы докеров в производстве.
airtonix
0

Мне кажется, такая же проблема возникает, когда я создаю атом в Linux.

sudo apt-get install nodejs-dev

Исправьте мой вопрос. Надеюсь, что это будет вам полезно.

Кангер
источник
0

Если вы не хотите использовать символическую ссылку, вы можете это сделать. работает в ubuntu

#!/usr/local/bin/node --harmony

Тег harmony предназначен для новой гармонии ECMAscript

user2290820
источник
0
  1. запустите команду which nodeрезультат будет что-то

    /home/moh/.nvm/versions/node/v8.9.4/bin/node

  2. Скопируйте указанный выше путь и выполните команду на шаге 3.

  3. ln -s /home/moh/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node

Moh .S
источник
-1

Вы должны называть «nodejs», а не «node». Чтобы проверить это, введите node -vв оболочке: если ничего не найдено, попробуйте nodejs -v. Если здесь отображается номер версии, то вам следует использовать команду, nodejsа не node. Следовательно, вы должны изменить вызов для просмотра в своем скрипте с nodeна nodejs(как показано ниже): replace

#!/usr/bin/env node

с участием

#!/usr/bin/env nodejs

Возможно, вам также придется открыть скрипт от имени суперпользователя.

user51324
источник