Node forever / usr / bin / env: node: Немає такого файлу чи каталогу


108

Я встановив nodejs за допомогою:

apt-get install nodejs

Тоді я встановив npm, використовуючи:

apt-get install npm

І тоді я встановив назавжди, використовуючи:

npm install forever -g

Тепер я переходжу до свого проекту /var/www/myproject

і намагатися бігти forever start server.js

то я отримую таке повідомлення:

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

Хтось може сказати мені, що відбувається?



1
Я отримую цю помилку, і я використовую Node Version Manager.
мансардне крісло

Відповіді:


270

EDIT: Станом на грудень 2018 року, це вже не правильний шлях. Дивіться інші дві відповіді.

Вам потрібно зв'язати виконуваний nodejs з вузлом sudo ln -s "$(which nodejs)" /usr/local/bin/node. Причиною цього є те, що коли ви "apt-get install node", він встановлює не пов'язаний пакет, тому вони повинні були вибрати інше ім'я, щоб воно не конфліктувало


4
що є $ (який nodejs) "- це код, який ви вставляєте, я повинен просто скопіювати пасту або?
Марк Расмуссен

11
"$ (який nodejs)" отримує шлях до виконуваного вузла. Коли ви щось помістите всередину "$ ()", він виконується, а потім вставляється в команду, що містить
chedabob

2
@chedabob Я зіткнувся з тією ж проблемою, але я ще не вирішив її, коли я виконував вашу команду в той час, я отримав ln: не вдалося створити символічне посилання '/ usr / bin / node': Файл існує
DASADIYA CHAITANYA

@ dasadiya-chaitanya У цьому випадку переконайтесь, що існуючий файл вказує на правильний виконаний вузол, виконавши наступне. ls -lart / usr / bin / node. Якщо символьне посилання не вказує на правильний бінарний файл, у такому випадку видаліть його. І повторіть наступне: sudo ln -s "$ (котрий nodejs)" / usr / bin / node
brownmamba

4
На Debian і Ubuntu є пакет, що nodejs-legacyзабезпечує символічне посилання. Ви не повинні робити це вручну. apt-get install nodejs-legacyце правильний спосіб усунення проблеми, дивіться мою відповідь нижче.
Клімент Шрайнер

45

Хоча прийнята відповідь виправляє проблему, правильний спосіб зробити це, принаймні, з Debian Jessie і вперед та Ubuntu 14.4 та вперед 1 - це встановити спадщину nodejs :

apt-get install nodejs-legacy

Причина полягає в тому, що Debian вже мав пакет (вузол), що забезпечує / usr / bin / node , а двійковий код вузла nodejs повинен був бути встановлений у / usr / bin / nodejs.

Пакет nodejs-legacy забезпечує символічне посилання від / usr / bin / nodejs до / usr / bin / node (і конфліктує з пакетом вузла ).

Джерело: [CTTE # 614907] Дозвіл конфлікту між вузлом / nodejs та помилкою Debian # 614907: node: ім'я конфліктує з інтерпретатором node.js


Це правильний шлях на Debian / Ubuntu +1, відмінний контекст для тих, хто не знайомий з ОС.
Лігемер

18

Краще, якщо ви оновите до останньої версії вузла

  1. кеш sudo npm clean -f
  2. sudo npm install -gn
  3. sudo n стабільний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.