ошибка просмотра / 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

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


Это решение моей проблемы 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


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


-1

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

#!/usr/bin/env node

с участием

#!/usr/bin/env nodejs

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.