Не удается установить NodeJs: / usr / bin / env: node: такого файла или каталога нет


302

Я пытаюсь установить nodeJs в мою Ubuntu 14.04, чтобы использовать GruntJ.

Я читал об 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

Что я должен делать?

Ответы:


794

Создание символической ссылки решает проблему:

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

(Мои благодарности и +1 голос за ответ бодокайзера ).


97
sudo apt-get install nodejs-legacyсоздает эту ссылку тоже, см. описание на packages.debian.org/sid/nodejs-legacy
anatoly techtonik

1
Симлинк решил проблему и сэкономил много времени на разработку. Спасибо!
Фарзад YZ

Это исправление серьезно спасает. Особенно, если вы следуете руководству по разрешениям на исправление здесь docs.npmjs.com/getting-started/fixing-npm-permissions
Josh Frankel

Спасибо! Это спасло мой день, когда я попытался настроить приложение для узлов в облаке 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 : «Интерактивно управляйте всеми
версиями

Решил проблему для меня
критик

я скопировал laravelпроект из windowsмашины ubuntu 16.04и laravel mixимел проблемы с npm run watchИ это решение работает для меня , и теперь проблема ушла
AN

29

если вы можете получить доступ к узлу на терминале ubuntu с помощью команды nodejs, то эту проблему можно просто решить, используя -создание символической ссылки на nodejs и узел, используя

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

/ 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"

б) Создайте символическую ссылку на «/ 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
@ Том-Хейл - это способ Ubuntu для этого. Вы используете альтернативы, чтобы указать правильный узел
kervin


2

Для моего случая связи было НЕ работать следующим образом

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

Но вы можете открыть / usr / local / bin / lessc от имени пользователя root и изменить первую строку с узла на nodejs.

- #! / usr / bin / env node

+ #! / 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 let notifier = require ('update-notifier') ({pkg}) ^^^

SyntaxError: Декларации с областью действия (let, const, function, class) еще не поддерживаются вне строгого режима при экспорте. 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.