Подтвердить что ты не робот

Express.js: Нет. Такой файл или каталог

Я установил node с apt-get install nodejs. Затем я установил npm с помощью apt-get install npm. Теперь, когда я пытаюсь запустить express, я получаю

$ express 
/usr/bin/env: node: No such file or directory

Как устранить эту ошибку?

4b9b3361

Ответ 1

В 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,

  • установленный дистрибутивом (Debian/Ubuntu) с помощью apt-get.
  • версия установлена ​​ n latest.

Нет смысла иметь более старую версию дистрибутива. И, что еще хуже, если эта версия работает, она может потенциально установить ее в другое место и иметь в ней изменения Debian, которые предполагают установить каталоги установки Debian. Лучше использовать либо /, либо не оба.

Ответ 2

вы должны установить пакет nodejs-legacy, у которого есть ссылка из /usr/bin/ node в/usr/bin/nodejs

$ sudo apt-get install nodejs-legacy

Ответ 3

В моем случае это было потому, что в моей переменной среды PATH у меня было "~/progs/node/bin/", а "~", похоже, не разрешено с помощью env... заменяя он с полным полным путем ( "/home/myuser/node/bin" ) решил мою проблему.

Ответ 4

Это решение

export PATH="$HOME/opt/nodejs/bin:$PATH"

разрешил эту проблему для меня (она должна работать, если задана переменная $HOME). Это также позволяет мне избегать жесткого кодирования пути к моему домашнему каталогу (например, чтобы я мог повторно использовать мой .bash_profile с разными учетными записями/серверами, если мне нужно)

Ответ 5

сделайте это в cmd

sudo apt-get install nodejs-legacy
chmod your folder 700 (optional)