узел: команда не найдена

47

Я не понимаю, почему nodeкоманда не будет работать, тогда как nodejsработает:

$ node --version
zsh: command not found: node
$ nodejs --version
v0.10.15

Я пытался apt-get install nodejs, но последняя версия уже установлена.

И, кроме того:

$ npm
zsh: command not found: npm

Я думал, что npmбыло включено в NodeJS> 0.10?

Матье Наполи
источник
пусть этот пост решит вашу проблему [Stackoverflow] [1] [1]: stackoverflow.com/questions/13593902/node-command-not-found
Ахмед Аль-Батташи
@ AhmedAl-battashi Это не помогает, я уже прочитал это. NodeJS установлен, nodejsнаходится в PATH, но nodeи npmне доступны, я не могу найти их в любом месте в моей системе.
Матье Наполи
2
Я не совсем уверен, но я помню, что причина, по которой nodeбинарный файл был переименован, заключалась в том, что он конфликтовал с одним из названных пакетов node(Amateur Packet Radio Node Program).
yjwong
Вы уверены, что ищете, nodeа не nodejs? nodeэто не то, что вы думаете.
Брайам
@Braiam nodeиспользуется в каждом уроке, который я видел
Matthieu Napoli

Ответы:

44

nodeПакет не имеет никакого отношения к NodeJS. Смотрите здесь для получения информации об узлеУстановить узел :

Любительская программа Packet Radio Node (переходный пакет)


Вместо этого вы должны установить nodejs Установить nodejsпакет.

sudo apt-get install nodejs

затем используйте его с nodejsкомандой.

Причина nodeне работает, вероятно, из-за конфликтов с оригинальным nodeпакетом, указанным выше.


Если вы хотите npm Установить нпм, вы должны будете установить это также.

sudo apt-get install npm
харакири
источник
3
Я знал о nodeпакете, но я не понимаю, почему пакет имен влияет на инструмент командной строки. Например, я не устанавливаю php, но php5-cli. Но спасибо за ответ, я не был уверен, если ручная установка npmбудет проблемой, по-видимому, это не так.
Матье Наполи
2
Установка nodejs-legacyпакета позволяет использовать либо nodeили nodejs.
grooveplex
48

Я согласен, это небольшая проблема, но я не знаю, почему это происходит.

Исправление

Перво-наперво, просто создайте символическую ссылку из вызываемого, nodeуказывая на nodejsдвоичный файл.

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

Проблема

Довольно много руководств, которые я нашел для установки Nodejs ( здесь и здесь ), имеют одинаковый код для проверки правильности установки. По сути, создайте простой сервер, например, так:

// hello_node.js
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello Node.js\n');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');

и затем запустите его в nodejs со следующим:

node hello_node.js

А потом, когда я пытался использовать npm для установки чего-либо, он не работал и сообщал об одном и том же node not foundсообщении.

jlouzado
источник
У меня та же проблема, sudo apt-get install npm и затем, следуя рекомендации @jlouzado, завершите работу. Сейчас работает хорошо
user615274
5
Забавный совет: есть пакет nodejs-legacy , который предоставляет символическую ссылку, предположительно для совместимости с «устаревшим кодом», который все еще полагается на него.
Симон
1
@ Симон Я думаю, что это лучшее решение, чем создание символической ссылки.
grooveplex
Итак, теперь я считаю 3 пакета, которые мне нужно установить, если я делаю что-то с Node.js. Я пытался установить эту библиотеку Node.js около часа.
Судо
Я не смог установить, asciicast2gifпотому что во время установки он работает, node install.jsи я получаю сообщение об ошибке sh: 1: node: not found. Это исправляет это.
Винаяк
26

Как @ minerz029 уже сказал, что есть конфликт с nodeпакетом. Но если вам все еще нужна nodeкоманда (потому что скрипт использует только, nodeнапример), правильный путь - установить nodejs-legacyпакет:

apt-get install nodejs-legacy

и не создавайте символическую ссылку самостоятельно (особенно не в /usr/bin/). Это обеспечит nodeкоманду для nodejs.

F.Raab
источник
2
Оно работает. Я думаю, что это лучше, чем ответ @ jlouzado.
Шон Се
если вы часто «начинаете с нуля» с установкой ОС .... Гораздо лучше позволить apt управлять символическими ссылками в bin. Спасибо!
Майк
2

Попробуй это

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

sudo apt-get install -y nodejs

:)

МУХАСИН БАБУ
источник
2
Почему вы не устанавливаете последнюю версию ?:curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
Karel
setup_6.x стабильно
МУХАСИН БАБУ
Политика LTS для Node.js версии 8 заключается в том, что она ожидает LTS сейчас, она становится LTS через несколько месяцев в октябре 2017 года, начинает период обслуживания в апреле 2019 года и заканчивает обслуживание в декабре 2019 года. Для получения дополнительной информации см. таблицу в этом ответе: askubuntu.com/questions/626383/…
карел
1

может вам нужно установить вручную

sudo apt-get install npm
Ахмед Аль-Батташи
источник
1
Я везде читал, что не нужно устанавливать npm вручную, потому что он был включен в> v0.10: / Я немного растерялся
Matthieu Napoli
0

Быстрое исправление для nvmпользователей. Я использую nvm(узел версию менеджера) и для меня , чтобы использовать npmкоманду я всегда должен выдавать перед тем npmэтой командой nvm use 0.x(замените 0.xс 0.11или 0.10, например, версию , которую вы хотите использовать).

Карл Моррисон
источник
0

Как уже упоминалось в minerz029 , некоторые версии nodejsпакета не будут предоставлять nodeдвоичный файл из-за другого пакета, ранее использовавшего это имя. Решение так же просто, как выполнить шаги по установке на собственном веб-сайте Node:

Установка Node.js через менеджер пакетов | Дистрибутивы Linux на основе Debian и Ubuntu

На данный момент эти шаги:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

Но было бы лучше проверить ссылку на источник, чтобы убедиться, что вы используете последнюю версию.

bmaupin
источник