Node forever / usr / bin / env: node: Tidak ada file atau direktori seperti itu

108

Saya telah menginstal nodejs menggunakan:

apt-get install nodejs

Kemudian saya telah menginstal npm menggunakan:

apt-get install npm

Dan kemudian saya telah menginstal selamanya menggunakan:

npm install forever -g

Sekarang saya pergi ke proyek saya /var/www/myproject

dan mencoba lari forever start server.js

kemudian saya mendapatkan pesan berikut:

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

Adakah yang bisa memberi tahu saya apa yang sedang terjadi?

Marc Rasmussen
sumber
1
Saya mendapatkan bug ini dan saya menggunakan Node Version Manager.
kursi munchschair

Jawaban:

270

EDIT: Mulai Desember 2018, ini bukan lagi cara yang benar. Lihat dua jawaban lainnya.

Anda perlu menghubungkan nodejs yang dapat dieksekusi ke node sudo ln -s "$(which nodejs)" /usr/local/bin/node. Alasannya adalah bahwa ketika Anda melakukan "apt-get install node", itu menginstal paket yang tidak terkait, jadi mereka harus memilih nama yang berbeda sehingga tidak akan konflik

chedabob
sumber
4
what is $ (which nodejs) "adalah kode yang Anda tempelkan sesuatu yang harus saya salin atau tempel?
Marc Rasmussen
11
"$ (which nodejs)" mendapatkan jalur dari nodejs yang dapat dieksekusi. Ketika Anda meletakkan sesuatu di dalam "$ ()" itu akan dieksekusi dan kemudian dimasukkan ke dalam perintah yang mengandung
chedabob
2
@chedabob Saya telah menghadapi masalah yang sama tetapi saya belum diselesaikan itu ketika saya menjalankan perintah Anda pada waktu itu saya mendapat ln yang: gagal untuk membuat link simbolik '/ usr / bin / node': Berkas ada
DASADIYA Chaitanya
@ dasadiya-chaitanya Dalam hal ini, pastikan bahwa file yang ada mengarah ke node yang benar yang dapat dieksekusi dengan menjalankan perintah berikut. ls -lart / usr / bin / node. Jika symlink tidak menunjuk ke biner yang benar, maka hapuslah. Dan jalankan kembali perintah berikut: sudo ln -s "$ (which nodejs)" / usr / bin / node
brownmamba
4
Di Debian dan Ubuntu, ada paket yang nodejs-legacymenyediakan tautan simbolik. Anda tidak seharusnya melakukannya secara manual. apt-get install nodejs-legacyadalah cara yang benar untuk memperbaiki masalah tersebut, lihat jawaban saya di bawah ini.
Clément Schreiner
45

Sementara jawaban yang diterima memperbaiki masalah, cara yang benar untuk melakukannya, setidaknya dengan Debian Jessie dan meneruskan dan Ubuntu 14.4 dan meneruskan 1 adalah menginstal nodejs-legacy :

apt-get install nodejs-legacy

Alasannya adalah Debian sudah memiliki paket (node) yang menyediakan / usr / bin / node , dan biner node nodejs harus diinstal ke / usr / bin / nodejs.

Paket nodejs-legacy menyediakan tautan simbolis dari / usr / bin / nodejs ke / usr / bin / node (dan konflik dengan paket node ).

Sumber: [CTTE # 614907] Resolusi konflik node / nodejs dan bug Debian # 614907: node: nama konflik dengan interpreter node.js

Clément Schreiner
sumber
Ini adalah cara yang benar di Debian / Ubuntu +1, konteks yang bagus untuk mereka yang tidak terbiasa dengan OS.
Ligemer
18

Lebih baik jika Anda memperbarui ke versi node terbaru

  1. sudo npm cache clean -f
  2. sudo npm install -gn
  3. sudo n stabil
Shantanu
sumber