Tidak dapat menginstal NodeJs: / usr / bin / env: node: Tidak ada file atau direktori tersebut


302

Saya mencoba menginstal nodeJs ke Ubuntu 14.04 saya untuk menggunakan GruntJs.

Saya telah membaca tentang cara Ubuntu yang berbeda untuk melakukannya ( masalah? ), Jadi inilah yang saya lakukan untuk menginstalnya:

sudo apt-get install npm

sudo npm install -g grunt-cli

Mengetik mendengus setelah itu saya mendapat kesalahan:

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

Jadi, saya sudah mencoba:

curl -sL https://deb.nodesource.com/setup | sudo bash -

sudo apt-get install -y nodejs

sudo apt-get update

Dan mencoba lagi, dan masih mendapatkan kesalahan, saya sudah mencoba:

sudo add-apt-repository https://launchpad.net/~chris-lea/+archive/node.js/

sudo apt-get install -y nodejs

Saya mendapat pesan ini:

nodejs is already the newest version.
0 to upgrade, 0 to newly install, 0 to remove and 3 not to upgrade.

Saya memang mencoba pembersihan kalau-kalau:

sudo apt-get autoremove

Tapi tidak, kesalahannya masih ada: ketika saya mengetik kasar saya masih mendapatkan /usr/bin/env: node: No such file or directory

Apa yang harus saya lakukan?

Jawaban:


794

Melakukan symlink memecahkan masalah:

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

(Terima kasih dan 1 suara saya untuk jawaban bodokaiser ).


97
sudo apt-get install nodejs-legacyjuga membuat tautan ini, lihat deskripsi di packages.debian.org/sid/nodejs-legacy
anatoly techtonik

1
Symlink menyelesaikan masalah dan menghemat banyak waktu pengembangan. Terima kasih!
Farzad YZ

Perbaikan ini benar-benar penyelamat. Terutama, jika Anda mengikuti panduan perizinan memperbaiki di sini docs.npmjs.com/getting-started/fixing-npm-permissions
Josh Frankel

Terima kasih! Ini menyelamatkan sore saya, mencoba mengatur aplikasi simpul di google cloud Linux.
jovan

1
Anda harus menggunakan which nodesehingga Anda mendapatkan jalur yang benar ke simpul Anda. Jadi perintahnya adalahln -s "$(which node)" /usr/bin/node
technogeek1995

117

Masalahnya bukan pada versi node. Sebaliknya, ini adalah cara NodeJS diinstal secara default di Ubuntu. Saat menjalankan aplikasi Node di Ubuntu Anda harus menjalankan nodejs somethign.jsalih-alihnode something.js

Jadi nama aplikasi yang dipanggil di terminal adalah nodejsdan tidak node. Ini adalah mengapa ada kebutuhan untuk symlink untuk hanya maju semua perintah yang diterima sebagai nodeuntuk nodejs.

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

6
Anda perlu menjalankan perintah ini dengan sudo, jika Anda mendapatkan "ln: gagal membuat tautan simbolik '/ usr / bin / node'"
Suraj Dubey

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

54

Saya pikir Anda harus memutakhirkan versi simpul terbaru

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

1
Hanya sebuah tip; indentasi baris kode Anda dengan 4 spasi;) juga, nbukan perintah yang dikaitkan dengan Node.JS.
Qix - MONICA DISALAHKAN

@ David berdasarkan pada deskripsi paket pada NPM : "Mengelola Semua Versi Node Anda secara Interaktif"
frdmn


saya menyalin sebuah laravelproyek dari windowsmesin ke ubuntu 16.04dan laravel mixmemiliki masalah dengan npm run watchDAN solusi ini bekerja untuk saya dan sekarang masalah hilang
AN

29

jika Anda dapat mengakses node di terminal ubuntu menggunakan perintah nodejs, maka masalah ini dapat diselesaikan dengan menggunakan -membuat tautan simbolik dari nodejs dan node menggunakan

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

dan ini dapat menyelesaikan masalah




9

Saya telah menemukan ini sering kesalahan misnaming, jika Anda menginstal dari manajer paket Anda bin dapat disebut nodejs sehingga Anda hanya perlu symlink seperti itu

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

1
Daripada menambahkan umpan balik negatif, beri tahu saya di sini di komentar apa yang salah, jadi saya dapat membantu Anda dengan itu. Karena tidak ada yang salah dalam membuat symlink terutama jika itu membantu Anda mengelola segalanya dengan lebih baik.
Ahmad Awais

1
Saya sendiri lebih suka pendekatan ini. Bersih.
Muhammad Gelbana

8

Jika Anda sudah menginstal nodejs (periksa dengan which nodejs) dan tidak ingin menginstal paket lain, Anda bisa, sebagai root:

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 99

Ini adalah cara Debian yang tepat.
Tonin

6

Ketika saya menggunakan tegukan saya mendapat kesalahan ini.

~$ gulp

/ usr / bin / env: 'node': Tidak ada file atau direktori tersebut

Ini telah dihapus dengan menjalankan perintah berikut Anda harus ingat bahwa direktori / usr / bin memiliki semua izin.

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

ini bekerja untuk saya ..


5

Tergantung pada bagaimana Anda menginstal node Anda, sebagian besar waktu itu mungkin tidak di / usr / bin /, dalam kasus saya sendiri, saya menggunakan nvm untuk menginstal sehingga node saya berada di ./nvm/versi.

Menggunakan perintah ini which nodesaya menemukan jalan, tetapi untuk membuat pekerjaan lebih mudah Anda dapat menjalankan perintah ini.

nodepath=$(which node); sudo ln -s $nodepath /usr/bin/node

perintah di atas akan mendapatkan lokasi simpul Anda dan membuat tautan untuk Anda.


5

Ada dua solusi untuk ini:

a) Setel variabel PATH Anda untuk memasukkan "/ usr / local / bin"

export PATH="$PATH:/usr/local/bin"

b) Buat symlink ke "/ usr / bin" yang sudah ada di PATH Anda

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

Saya harap ini membantu.


4

Sementara ln -sperbaikan yang paling mudah jelas, sepotong penjelasan:

Karena konflik dengan paket lain, executable dari repositori Ubuntu disebut nodejs bukan node. Ingatlah ini saat Anda menjalankan perangkat lunak.

Saran ini muncul, saat menginstal sudo apt-get install nodejs.

Jadi beberapa alat lain yang dikenal (saya tidak tahu apa fungsinya. Meskipun dikenal dengan repositori ubuntu, itu tidak diinstal secara default di 16.04) menempati namespace itu.

Akan lebih baik, jika Ubuntu telah menawarkan saran bagaimana cara memperbaikinya 'bersih', jika tidak dengan melakukan apa yang akan dilakukan paket. (tabrakan tetap merupakan tabrakan ... jika + kapan itu akan terjadi)


1
@ tom-hale jawaban adalah cara Ubuntu untuk ini. Anda menggunakan alternatif untuk menentukan simpul yang benar
kervin


2

Untuk link kasus saya tidak tidak bekerja sebagai berikut

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

Tetapi Anda dapat membuka / usr / local / bin / lessc sebagai root, dan mengubah baris pertama dari node ke nodejs.

- #! / usr / bin / env node

+ #! / usr / bin / env nodejs


2

Ikuti perintah ini untuk memperbaiki masalah.

Di terminal:

  1. Bersihkan seluruh cache NPM:

    $ sudo npm cache clean -f
  2. sudo npm install -g n
  3. Instal versi stabil terbaru Node.js:

    sudo n stable

Sekarang versi terbaru Node.js telah diinstal. Periksa versi menggunakan:

node -v


0

Bagi saya jawaban yang diterima belum bekerja. Saya memulai seperti yang disarankan di sini:

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

Setelah melakukan ini, saya mendapatkan kesalahan berikut:

/usr/local/lib/node_modules/npm/bin/npm-cli.js:85 biarkan notifier = butuhkan ('update-notifier') ({pkg}) ^^^

SyntaxError: Deklarasi blok-lingkup (mis. Konstanta, fungsi, kelas) belum didukung di luar mode ketat di exports.runInThisContext (vm.js: 53: 16) di Module._compile (module.js: 374: 25) di Object. Module._extensions..js (module.js: 417: 10) di Module.load (module.js: 344: 32) di Function.Module._load (module.js: 301: 12) di Function.Module.runMain ( module.js: 442: 10) saat startup (node.js: 136: 18) di node.js: 966: 3

Solusinya adalah mengunduh versi simpul terbaru dari https://nodejs.org/en/download/ .

Lalu saya lakukan:

sudo tar -xf node-v10.15.0-linux-x64.tar.xz --directory /usr/local --strip-components 1

Sekarang pembaruan akhirnya berhasil: npm -vdiubah dari 3.2.1 ke 6.4.1

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.