Я установил node с apt-get install nodejs
. Затем я установил npm с помощью apt-get install npm
. Теперь, когда я пытаюсь запустить express
, я получаю
$ express
/usr/bin/env: node: No such file or directory
Как устранить эту ошибку?
Я установил node с apt-get install nodejs
. Затем я установил npm с помощью apt-get install npm
. Теперь, когда я пытаюсь запустить express
, я получаю
$ express
/usr/bin/env: node: No such file or directory
Как устранить эту ошибку?
В Ubuntu есть два пакета с похожими именами, node и nodejs.
node
делает это,
Описание-ru: программа любительского пакетного радио node. Программа node принимает соединения TCP/IP и пакетной радиосети и предоставляет пользователям интерфейс, который позволяет им устанавливать шлюзовые соединения с удаленными узлами с использованием различных радиолюбительских протоколов.
nodejs
делает это,
Описание-ru: Node.js javascript engine на стороне сервера Node.js похож по дизайну и зависит от таких систем, как Ruby Event Machine или Python Twisted. Он принимает модель события немного дальше - он представляет цикл событий как конструкцию языка, а не как библиотеку. Node.js поставляется с несколькими полезными библиотеками для работы с серверными задачами: System, Events, Standard I/O, Modules, Timers, Child Processes, POSIX, HTTP, Multipart Parsing, TCP, DNS, Assert, Path, URL, Query Строки.
Fedora также следует аналогичной схеме именования пакетов. Из-за этого двоичный код в nodejs
должен был быть переименован в nodejs
из оригинала node
. Однако это не технически кошерно: и большинство программ nodejs (и библиотек, установленных с npm) предполагают, что двоичный node - node
. Если вы хотите обойти это, самым простым способом является просто символическое сочетание двух. Если вы берете этот маршрут, не устанавливайте пакет node
, который обрабатывает материал любительского пакета радио.
sudo ln -s /usr/bin/nodejs /usr/local/bin/node
В качестве альтернативы, в случае node, я бы предложил использовать n
и не устанавливать node
. Просто установите npm (который установит node), затем удалите npm, а затем скажите apt очистить его. Для этого просто запустите
sudo apt-get install npm
sudo npm install -g n
sudo n latest
sudo apt-get --purge remove npm
sudo apt-get autoremove
Существуют и другие двоичные дистрибутивные менеджеры, которые даже работают из оболочки script как nvm
, но я лично предпочитаю n
. Подумайте о n
как о подходе только к одному: двоичному файлу node, который он устанавливает в /usr/local/bin
.
Почему удаление npm? Не были. apt-get --purge remove
может удалять только те вещи, которые установлены диспетчером пакетов. n latest
работает за пределами диспетчера пакетов. Если вы сделаете это, будет два npms,
apt-get
.n latest
.Нет смысла иметь более старую версию дистрибутива. И, что еще хуже, если эта версия работает, она может потенциально установить ее в другое место и иметь в ней изменения Debian, которые предполагают установить каталоги установки Debian. Лучше использовать либо /, либо не оба.
вы должны установить пакет nodejs-legacy, у которого есть ссылка из /usr/bin/ node в/usr/bin/nodejs
$ sudo apt-get install nodejs-legacy
В моем случае это было потому, что в моей переменной среды PATH
у меня было "~/progs/node/bin/", а "~", похоже, не разрешено с помощью env
... заменяя он с полным полным путем ( "/home/myuser/node/bin" ) решил мою проблему.
Это решение
export PATH="$HOME/opt/nodejs/bin:$PATH"
разрешил эту проблему для меня (она должна работать, если задана переменная $HOME). Это также позволяет мне избегать жесткого кодирования пути к моему домашнему каталогу (например, чтобы я мог повторно использовать мой .bash_profile с разными учетными записями/серверами, если мне нужно)
сделайте это в cmd
sudo apt-get install nodejs-legacy
chmod your folder 700 (optional)